C语言版数据结构:[1]线性顺序表

在数据结构中,线性表是入门级数据结构,线性表又分为顺序表和链表,这一节我们就说一下线性顺序表的C语言实现。坐标为您分享。

操作方法

  • 01

    第一步:线性顺序表的创建。 线性顺序表是存储在一个连续的数组中的,因此对其数据类型有一个结构体声明。 #include <stdio.h> #include <stdlib.h> #define MaxSize 20 typedef int datatype; typedef struct list { datatype data[MaxSize]; int last; }seqlist;

  • 02

    第二步:添加元素。 在顺序线性表中添加元素的原理就是,找到给定的位置,将给定位置到线性表结束的所有元素后移一位,然后将新元素添加到给定的位置中。

  • 03

    /*在顺序线性表中i的位置添加元素x*/ int insert_seqlist(seqlist *l,datatype x,int i) { int j; if((*l).last > MaxSize) { printf("溢出\n"); return 0; } else if((i<1)||(i>(*l).last+1)) { printf("位置有误\n"); return 0; } else { for(j=(*l).last-1;j>=i-1;j--) (*l).data[j+1] = (*l).data[j]; (*l).data[i-1] = x; (*l).last = (*l).last + 1; return 1; } } /*在顺序线性表中i的位置添加元素x*/

  • 04

    第三步:查找元素。 给定元素的值,查找线性表中是否存在该元素,做法是遍历所有线性表中的元素,如果存在则返回元素的位置,否则正常结束。

  • 05

    /*在顺序线性表中查找给定值为X的节点*/ int search_seqlist(seqlist *l,datatype x) { int j; for(j=0;j<(*l).last-1;j++) { if((*l).data[j] == x) return j+1; } return 0; } /*在顺序线性表中查找给定值为X的节点*/

  • 06

    第四步:删除指定位置的元素。 原理是将指定位置以后的所有元素集体前移一位。

  • 07

    /*在顺序线性表中i的位置删除元素x*/ int del_seqlist(seqlist *l,int i) { int j; if(i>MaxSize) { printf("超出线性表范围。\n"); return 0; } else if(i<1||i>(*l).last) { printf("该节点不存在。\n"); return 0; } else { for(j=i-1;j<(*l).last;j++) (*l).data[j] = (*l).data[j+1]; (*l).last--; return 1; } } /*在顺序线性表中i的位置删除元素x*/

  • 08

    第五步:线性表的输出。 将线性表中的所有元素全部输出,每四个一行。

  • 09

    /*输出顺序线性表的全部值*/ void prf_seqlist(seqlist *l) { int j; for(j=1;j<=(*l).last;j++) { printf("%d  ",(*l).data[j-1]); if(j%4==0) printf("\n"); } printf("\n"); } /*输出顺序线性表的全部值*/

  • 10

    第六步:主函数测试。 我们先建立包含九个元素的线性表(测试添加函数),然后查找包含数值为5的元素是否存在(测试查找函数),并将其删除(测试删除函数),并输出所有元素(测试输出函数)。

  • 11

    int main() { seqlist *l; (*l).last = 0; int a; int j; int locate; for(j=1;j<10;j++) { printf("please input number:"); scanf("%d",&a); insert_seqlist(l,a,j); } prf_seqlist(l); locate = search_seqlist(l,5); del_seqlist(l,locate); prf_seqlist(l); system("pause"); return 0; }

  • 12

    第七步:测试效果。 从结果我们可以看出,程序运行正常,结果符合预期。

(0)

相关推荐

  • C语言版数据结构:[2]链表的建立。

    链表其实是线性表的链接存储方式,这种方式下的存储单元可以是连续的,也可以是不连续的.这里我们主要讨论链表的尾插法,头插法和尾插法基本类似.坐标为您分享. 操作方法 01 一.链表的建立分为带头结点的头 ...

  • 数据结构顺序表的删除

    数据结构顺序表的删除 操作方法 01 题目要求: 实现一个线性表,对一个n不超过1000的线性表进行删除操作. 输入 第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list ...

  • 怎么用c语言实现顺序表

    教你怎么用c语言实现数据结构中顺序表的基本操作 操作方法 01 第一步c语言是没有引用的,可以使用一个const指针来模拟引用 void InitList(SqList *L) { L->las ...

  • 顺序表的基本操作

    数据结构(c语言描述)-顺序表的一些基本操作 操作方法 01 我们要先学会使用结构体描述顺序表.SeqList是新定义的结构体类型标识符,用来定义顺序表,可使用语句SeqList:定义一个顺序表.也可 ...

  • 如何更改手机版支付宝的付款顺序

    手机版支付宝软件被很多人使用,用来支付,理财等,有的用户在使用该软件时,想要更改付款顺序,但是却不知道如何更改,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,点击并打开支付宝软件.2. 第二步 ...

  • 怎么在电脑版excel中更改透视表的值字段为计算平均值

    电脑版Excel软件被很多人使用,用来编辑文档,数据等,有的用户在使用该软件时,想要更改透视表的值字段为计算平均值,但是却不知道如何更改,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,创建一个 ...

  • 手机版搜狗浏览器中的表单密码数据如何清除

    今天给大家介绍一下手机版搜狗浏览器中的表单密码数据如何清除的具体操作步骤.1首先解锁手机,找到桌面上的搜狗浏览器APP,打开.2. 如图,进入主页面后,点击右上角的三横图标.3. 在下方打开的页面,点 ...

  • 怎么设置不显示电脑版Excel中的工作表

    电脑版Excel软件被很多人使用,用来编辑数据等,有的用户在使用该软件时,想要设置不显示工作表,但是却不知道如何设置,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,双击或者右击打开Excel表 ...

  • 数据结构之线性表

    N个数据元素的有限数列,一种最简单最常见的数据结构,比较复杂的线性表中一个数据元素可能包含多个数据项,这种情况下把数据元素称之为记录,包含大量记录的线性表称为文件. 操作方法 01 线性表的顺序表示和 ...