整理--数据结构--线性表

                                  顺序表:

//查找运算

int  Locate(SeqList L, ElemType e) 

{
        int i=0;       // i为扫描计数器,初值为0,即从第一个元素开始比较

       while ((i<=L.last)&&(L.elem[i]!=e))

                    //顺序扫描表,直到找到值为key的元素, 或扫描到表尾而没找到

                    i++; 

          if  (i<=L.last)

                    return(i+1);  //若找到值为e的元素,则返回其序号

          else

                    return(-1);  //若没找到,则返回空序号    }

//插入运算

/*在顺序表L中第i个数据元素之前插入一个元素e。 插入前表长n=L->last+1

i的合法取值范围是 1≤i≤L->last+2  */

int  InsList(SeqList *L,int i,ElemType e)//插入运算

{         int k;

          if((i<1) || (i>L->last+2)) /*首先判断插入位置是否合法*/

          {
            printf("插入位置i值不合法");

                    return(ERROR);       }

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

          {
           printf("表已满无法插入");

                    return(ERROR);       }

          for(k=L->last;k>=i-1;k--)   /*为插入元素而移动位置*/

                    L->elem[k+1]=L->elem[k];

          L->elem[i-1]=e;   /*C语言数组中,第i个元素的下标为i-1*/

          L->last++;

          return(OK);         }

//删除运算

int  DelList(SeqList *L,int i,ElemType *e) 

/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */    

{         int k;

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

          {         printf("删除位置不合法!");

                    return(ERROR);       }

          *e = L->elem[i-1];  /* 将删除的元素存放到e所指向的变量中*/

          for(k=i; i<=L->last; k++)

                    L->elem[k-1] = L->elem[k];  /*将后面的元素依次前移*/

          L->last--;

          return(OK);         }

void      merge(SeqList *LA,  SeqList *LB,  SeqList *LC)

{
            int i,j,k;

          i=0;j=0;k=0;

          while(i<=LA->last&&j<=LB->last)

                    if(LA->elem[i]<=LB->elem[j])

                    {
            LC->elem[k]= LA->elem[i];

                               i++; 

                               k++;}

                    else

                    {
            LC->elem[k]=LB->elem[j];

                               j++; 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值