原创 线性表 及在ucos中的应用 1(顺序表)

2011-12-5 21:46 1111 13 13 分类: MCU/ 嵌入式

  1. 顺序表

  1.1顺序表的结点结构

#define MAXSIZE  100

typedef     struct  sequen

{

  int databuf[MAXSIZE];

   int last;       //最后一个数组成员下标

}sequenlist;

 

1.2操作:

1.2.1建立

void Establish(sequenlist  *sequentest)

{

        memset(sequentest->databuf,0,MAXSIZE);

       sequentest->last=0;

}

1.2.2插入

 int insert(sequenlist  *sequentest, int i, int x)  //在位置i处插入x

{

        int j;

       

       if(sequentest->last>=MAXSIZE-1)

      {

        return 0; // 空间已满,无法插入

      }

      else if(i<1||i>sequentest->last+2) 

      {

        return 0; //非法位置 (i是从1开始 ,last是从0开始)

      }

      else

      {

            for(j=sequentest->last;j>i-1;j--)

            {

            sequentest->databuf[j+1]=sequentest->databuf[j];   //i位置右面的后移

            }

            sequentest->databuf[i-1]=x;   //将x 插入到i位置

            sequentest->last++;     //最后位置+1

           

      }

      return 1;

}

 

1.2.3 删除

int Delete(sequenlist  *sequentest, int i)

{

      int j;

     

      if(i<1||i>sequentest->last+1)

      {

            return 0; //非法位置 (i是从1开始 ,last是从0开始)

      }

      else

      {

               for(j=i-1;j<sequentest->last+1;j++)</sequentest->

                  {

                        sequentest->databuf[j]=sequentest->databuf[j+1]; //前移直接覆盖要删除的数据

 

            }

            sequentest->last--;

      }

      return 1;

}

顺序表特点:1.占用空间连续

2.顺序表的插入和删除需要移动大量数据,故不适合需要多次插入删除操作的数据

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /3 下一条