|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(book)
typedef struct tagbook
{
int no;//书的序号
char name[50];//书名
char pub[50];//出版社的名字
char writer[20];//作者名
struct tagbook *next;
}book;
int main()
{
int delnum;//删除书的序号与delnum相同的节点
book *p,*first,*p1;//不设头节点,first是第一个节点
first=p=p1=(book*)malloc(LEN);
p->no=1;//输入的要求是一行一个节点的数据,比如:102 abc cde fgh
scanf("%d",&p->no);//这句与上面的那句都是为了符合输入的要求而这样写的
while(p->no!=0)//当书的序号为0时结束
{
scanf("%s %s %s",p->name,p->pub,p->writer);
p=(book*)malloc(LEN);
p1->next=p;
scanf("%d",&p->no);
}
p1->next=NULL;
scanf("%d",&delnum);//输入要删除的书的序号
p1=p=first;
if(p->no==delnum)//第一个节点的序号与delnum相同的情况
first=first->next;
else//其他情况
{
while((p->no)!=delnum)
{
p1=p;
p=p->next;
}
p1->next=p->next;
}
p=first;
while(p)//输出删除后的结果
{
printf("%d %s %s %s\n",p->no,p->name,p->pub,p->writer);
p=p->next;
}
return 0;
}
|
|