帮忙用C语言写单链表的插入与删除程序`该怎么解决
帮忙用C语言写单链表的插入与删除程序``
下面是单链表插入与删除算法,因为是初学,请各位高手帮忙,写出完整的程序,谢谢拉
Void ListInsert(Lnode &L,int i ,ElemType e){
p=L;j=0;
while(p&&j <i-1){p=p- > next;++j}//寻找第i-1个结点
if(!p ¦ ¦j > i-1)return ERROR;//i小于1或者大于表长+1
s=(Linklist)malloc(sizeof(LNode));生成新结点
s- > data=e;s- > next=p- > next;//插入L中
p- > next=s;
return OK;
}
Void ListDelete(Lnode&L,int i,Elemtype&e){//寻找第i个结点,并令p指向其前趋
p=L;j=0;
while(p- > next&&j <i-1){
p=p- > next;++j;
}
If(!(p- > next) ¦ ¦j > i-1)return ERROR;//删除位置不合理
q=p- > next;p- > next=q- > next;//删除并释放结点
e=q- > data;free(q);
return Ok;
}
------解决方案--------------------
#define OK 1
#define ERROR -1
typedef int ElemType;
struct Linklist
{
ElemType data;
Linklist *next;
};
int ListInsert(Linklist *L, int i ,ElemType e)
{
Linklist *p,*s;
p=L;
int j=0;
while(p&&j <i-1)
{p=p-> next;++j;}//寻找第i-1个结点
if(!p || j > i-1)
return ERROR;//i小于1或者大于表长+1
s=(Linklist *)malloc(sizeof(Linklist));//生成新结点
s-> data=e;
s-> next=p-> next;//插入L中
p-> next=s;
return OK;
}
int ListDelete(Linklist *L,int i, ElemType &e)//寻找第i个结点,并令p指向其前趋
{
Linklist *p,*q;
p=L;
int j=0;
while(p-> next&&j <i-1)
{
p=p-> next;++j;
}
if(!(p-> next)|| j > i-1)return ERROR;//删除位置不合理
q=p-> next;p-> next=q-> next;//删除并释放结点
e=q-> data;free(q);
return OK;
}
我很少用C了,都是用C++,你看看行不行,如果还有问题什么的话再说
有错把错误信息发上来
下面是单链表插入与删除算法,因为是初学,请各位高手帮忙,写出完整的程序,谢谢拉
Void ListInsert(Lnode &L,int i ,ElemType e){
p=L;j=0;
while(p&&j <i-1){p=p- > next;++j}//寻找第i-1个结点
if(!p ¦ ¦j > i-1)return ERROR;//i小于1或者大于表长+1
s=(Linklist)malloc(sizeof(LNode));生成新结点
s- > data=e;s- > next=p- > next;//插入L中
p- > next=s;
return OK;
}
Void ListDelete(Lnode&L,int i,Elemtype&e){//寻找第i个结点,并令p指向其前趋
p=L;j=0;
while(p- > next&&j <i-1){
p=p- > next;++j;
}
If(!(p- > next) ¦ ¦j > i-1)return ERROR;//删除位置不合理
q=p- > next;p- > next=q- > next;//删除并释放结点
e=q- > data;free(q);
return Ok;
}
------解决方案--------------------
#define OK 1
#define ERROR -1
typedef int ElemType;
struct Linklist
{
ElemType data;
Linklist *next;
};
int ListInsert(Linklist *L, int i ,ElemType e)
{
Linklist *p,*s;
p=L;
int j=0;
while(p&&j <i-1)
{p=p-> next;++j;}//寻找第i-1个结点
if(!p || j > i-1)
return ERROR;//i小于1或者大于表长+1
s=(Linklist *)malloc(sizeof(Linklist));//生成新结点
s-> data=e;
s-> next=p-> next;//插入L中
p-> next=s;
return OK;
}
int ListDelete(Linklist *L,int i, ElemType &e)//寻找第i个结点,并令p指向其前趋
{
Linklist *p,*q;
p=L;
int j=0;
while(p-> next&&j <i-1)
{
p=p-> next;++j;
}
if(!(p-> next)|| j > i-1)return ERROR;//删除位置不合理
q=p-> next;p-> next=q-> next;//删除并释放结点
e=q-> data;free(q);
return OK;
}
我很少用C了,都是用C++,你看看行不行,如果还有问题什么的话再说
有错把错误信息发上来