链表问题求解答~~~
#include <stdio.h>#include <math.h>
#include <string.h>
#define LEN sizeof(struct lb)
struct lb
{
int c1;
int c2;
struct lb *next;
};
int n;
struct lb *tou(void) /*开辟空间和输入信息*/
{
struct lb *head,*p1,*p2;
n=0;
p1=(struct lb*)malloc(LEN);
p2=p1;
scanf("%d %d",&p1->c1,&p1->c2);
head=NULL;
while(p1->c1!=0)
{
n=n+1;
if(n==1)
head=p1;
else
{
p2=p1;
p1=(struct lb*)malloc(LEN);
fflush(stdin);
scanf("%d %d",&p1->c1,&p1->c2);
p2->next=p1;
}
}
p2->next=NULL;
return(head);
}
void main()
{
void sc(struct lb *head,int i);
struct lb *p,*head;
int i;
head=tou();
p=head;
while(p!=NULL)
{
printf("%d %d\n",p->c1,p->c2);
p=p->next;
}
p=head;
printf("n=%d\n",n-1);
printf("要删除学号请输入学号,否则输入0\n");
fflush(stdin);
scanf("%d",&i); /*输入要删除的号码*/
if(i>0)
{
sc(head,i);
}
else
printf("谢谢使用\n");
while(p!=NULL)
{
printf("%d %d\n",p->c1,p->c2);
p=p->next;
}
}
void sc(struct lb *head,int i) /*删除输入的号码*/
{
struct lb *p1,*p2;
p1=head;
if(head==NULL)
{
printf("空表");
}
else
{
while((p1->c1!=i)||(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p1->next==NULL) /*这条IF语句为什么执行不了?*/
{
printf("找不到信息");
}
else
if(p1==head)
{
*head=*(p1->next);
}
else
if(p1->c1==i)
{
p2->next=p1->next;
}
}
}