#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 ;
}