线性表详解

线性表

概念:线性表是一个有限序列,各个表项相继排列,第一个为表头,最后一个是表尾,且每两个相邻项之间有前驱和后继的关系。

线性表分为有序线性表和无序线性表。

1.顺序表的存储单元

L

a1

a2

...

ai

...

an

 

0

1

 

i-1

 

n-1

线性表L

代码实现存储结构的创建

   #define MaxSize 100  // 声明最大空间100

   typedef int DataType; //类型定义

   typedef struct //定义结构体

   {   

    DataType data[MaxSize];

      int length;

 

    }SqList; //结构体名称

 

    void Creat_List(SqList *L, int n) //创建线性表

    {   

     int i = 0;

     for(i=0; i < n; i++)

     scanf("%d",&L->data[i]);

        L->length = n;

    }

2.线性表的插入


由于在i位置插入x,导致i位置之后所有的数字都要向后移动一个位置,i位置前面的位置都不移动。

程序设计思路:

1.先判断顺序表是否满,插入的位置是否正确

2.在插入之前,先给x空出位置,也就是说把an—ai元素依次往后移动。

3.将x插入空出来的位置上

4.线性表的长度增加1.

代码实现:

 SqList  Insert_List(SqList L,int i,DataType x)

  {

      int j;

      if(L.length == MaxSize)

          printf("FULL\n");

      else if(i < 1 || i>L.length+1)

          printf("FILLE\n");

      else

      {

          for(j = L.length-1;j>= i-1;j--)

          L.data[j+1] = L.data[j];

          L.data[i-1] = x;

          L.length++;

      }   

      return L;

  }   

3.线性表的删除

由于在i位置删除ai,导致i位置之后所有的数字都要向前移动一个位置,i位置前面的位置都不移动。

程序设计思路:

1.判断所删除的元素是否在范围之内

2.将该位置上的值删除

3.将该值删除之后,从最后一个元素开始,依次往前移动

4.线性表的长度减一。

代码实现:

Remove_List(SqList L,int i)

  {

      int j;

      if(i <1 || i>L.length)

      printf("WRONF!!");

      else

      {

          for(j=i;j<=L.length-1;j++)

          L.data[j-1] = L.data[j];

          L.length--;

      }

      return 0;

  }

 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值