链表中怎么插入结点
我想问在第n个(例如第4个)结点前插入一个结点,怎么用循环把指针p指到该位置具体问题在注释
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}NODE;
NODE *input(void);
void output(NODE *head);
int insert(NODE *head,int index,int data);
int main()
{
NODE *head;
head=input();
output(head);
printf("Insert a node\n");
int index,data;
printf("Enter insert index and data:");
scanf("%d%d",&index,&data);
insert(head,index,data);
output(head);
return 0;
}
NODE *input(void)
{
int n;
NODE *head=NULL,*p,*q;
scanf("%d",&n);
while(n!=0){
p=(NODE*)malloc(sizeof(NODE));
if(p==NULL)
return NULL;
p->data=n;
if(head==NULL){
head=p;
q=p;
}
else
{
q->next=p;
q=p;
}
scanf("%d",&n);
}
q->next=NULL;
return head;
}
void output(NODE *head)
{
NODE *p;
p=head;
if(p==NULL)
{
printf("NULL!");
}
else
do{
printf("%d\t",p->data);
p=p->next;
}while(p!=NULL);
}
int insert(NODE *head,int index,int data)
{
NODE *s, *p=head;
int j=0;
while( ) //寻找第i-1结点,循环条件怎么写??
{
p=p->next;
}
if( ) //未找到时,错误条件怎么写
return -1;
s=(NODE*)malloc(sizeof(NODE));
s->data=data;
s->next=p->next;
p->next=s;
return 0;
}
[此贴子已经被作者于2016-12-4 16:33编辑过]