单链表的插入问题
本帖最后由 方大侠 于 2019-5-22 19:57 编辑status ListInsert(Linklist *L, int i, ElemType e){
Linklist *p = L;
int j=1;
if(L == NULL){
printf("输入表为空表\n");
exit(EXIT_FAILURE);
}
if(i<1){
printf("插入位置有误\n");
exit(EXIT_FAILURE);
}
while(p != NULL || j!= i){
p = p->next;
j++;
}
if(p == NULL || j < i){
printf("第i个元素不存在\n");
exit(EXIT_FAILURE);
········
}
}
如果一个链表有三个元素,我要插入在第4个(末尾,i=4),
这时,p = NULL,j =4 ,if判断不就不能插入了???
怎么改进。。。
方法来源(大话数据结构)
3鱼币也太小气了吧。不能大方点,最少也得30咯。
像这类问题代码要上完整。
如果你不想上,这里可以先给你指出几点。
插入:
要有 头插
中间插
尾插
所以if(L == NULL){
printf("输入表为空表\n");
exit(EXIT_FAILURE);
}这句没我觉得没用。 Status ListInsert(LinkList *L,int i,ElemType e)
{
LinkList s,p;
int j=1;
p=L->next;
while( p && j<i )
{
p=p->next;
j++;
}
if( !p || j>i )
{
return ERROR;
}
s=(LinkList)malloc(sizeof(Node));
s->date=e;
e->next=p->next;
p->next=e;
return OK;
}
页:
[1]