线性表链式 实现


#include
  "global.h"
typedef  struct  LNode
{
         ElemType  data;
         struct  LNode  *next;
} LNode ,*  LinkList ;

Status GetElem_L( LNode  L , int  i ,  ElemType  & e  )    //L为带头结点的单链表的头指针
{                                                 //当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR
         int  j=1;
         LNode  *p= L  .next;
         while (j< i  && p)    //j++不能写在while语句里面 否则当i==1时会造成 return ERROR
       {
              ++j;
              p=p->next;
       }
         if (!p || j> i  )    //j>i是为了排除i小于1的情况
                return  ERROR  ;
         else
                e =p->data;

         return  OK  ;
}

Status  ListInsert_L( LinkList  L ,  int  i  , ElemType  e ) //在线性表第i个位置前插入元素e
{
         int  j=0;
         LNode  *p= L  ;
         while (j< i  -1 && p)    //j++不能写在while语句里面 否则当i==1时会造成 return ERROR
       {
              j++;
              p=p->next;
       }

         if (!p || j> i  -1)  //i小于1或者大于表长加1
                return  ERROR  ;
       
         LNode  *q;
       q=(  LinkList )malloc( sizeof  ( LNode ));
         if (!q)
                return  OVERFLOW  ;
       q->data=  e ;
       q->next=p->next;

       p->next=q;
       
         return  OK  ;
}

Status  InitList_L( LinkList  L )
{
         L ->next= NULL  ;
         return  OK  ;
}
Status  Listdisplay_L( LNode  L )
{
         int  i=1;
         LNode  *p= L  .next;
         while (p)
       {
              printf(  "%3d  " ,p->data);
              p=p->next;
                if (i++%10==0)
                     putchar(  '\n' );
       }
         return  OK  ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值