再次麻烦大家一下,帮忙调试下!!!谢谢!!
#include<stdio.h>#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}ListNode;
typedef ListNode *LinkList;
LinkList Create()//创建链表。
{
LinkList head,p,q;
int x;
head=(ListNode *)malloc(sizeof(struct Lnode));
p=head;
printf("请输入链表中的第一个输入数据\n");
scanf("%d",&x);
printf("请继续往链表中输入数据,以(-1)为停止输入标志\n");
while(x!=-1)
{
q=(ListNode *)malloc(sizeof(struct Lnode));
q->data=x;
p->next=q;//建立成连接。
p=q;//p=p->next,
scanf("%d",&x);
}
p->next=NULL;
return head;
}
void Print(LinkList head)//打印链表中的数据。
{
LinkList p;
p=head->next;
printf("输出链表中的数据\n\n");
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n\n");
}
int Locate(LinkList head)//查找数据。
{
int x;
LinkList p;
printf("请输入要查询的数据:\n\n");
scanf("%d",&x);
p=head->next;
while(p!=NULL)
{
if(p->data==x)
return 1;
else
p=p->next;
}
return 0;
}
void InsList(LinkList head)//插入数据。
{
int x,i,j=0;
LinkList p,q;
printf("请输入要插入数据的位置和数据,格式如(x,i)\n");
scanf("%d,%d",&i,&x);
p=head;
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1||p==NULL)
print("没有此位置,插入错误\n");
else
{
q=(ListNode *)malloc(sizeof(struct Lnode));
q->data=x;
q->next=p->next;
p->next=q;
}
Print(head);
}
void DelList(LinkList head)//删除数据。
{
int i,j=0;
LinkList p,q;
p=head;
printf("请输入要删除第几个结点\n\n");
scanf("%d",&i);
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(p==NULL||j>i-1)
{
printf("输入的删除位置错误\n\n");
return ;
}
else
{
q=p->next;
p->next=p->next->next;
free(q);
}
printf("删除后");
Print(head);
}
void main()
{
int index;
LinkList head;
head=Create();
Print(head);
index=Locate(head);
if(index==1)
printf("\n\n有此数据\n\n");
else
printf("\n\n没有此数据\n\n");
InsList(head);
DelList(head);
}
为什么插入的地方不对啊!!!!