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

2025-10-23 22:11:35

1、第一步:线性顺序表的创建。

      线性顺序表是存储在一个连续的数组中的,因此对其数据类型有一个结构体声明。

#include <stdio.h>

#include <stdlib.h>

#define MaxSize 20

typedef int datatype;

typedef struct list

{

datatype data[MaxSize];

    int last;

}seqlist;

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

2、第二步:添加元素。

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

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

3、/*在顺序线性表中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*/

4、第三步:查找元素。

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

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

5、/*在顺序线性表中查找给定值为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的节点*/

6、第四步:删除指定位置的元素。

      原理是将指定位置以后的所有元素集体前移一位。

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

7、/*在顺序线性表中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*/

8、第五步:线性表的输出。

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

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

9、/*输出顺序线性表的全部值*/

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的元素是否存在(测试查找函数),并将其删除(测试删除函数),并输出所有元素(测试输出函数)。

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

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、第七步:测试效果。

      从结果我们可以看出,程序运行正常,结果符合预期。

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢