c语言链表的创建删除插入,C语言链表的创建,插入,删除

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

struct student

{

long number;

char name[8];

float score;

struct student *next;

}*head=NULL;

int sum=0; //计数

void main()

{

void show();

void insert();

void del();

char command[6];

printf("***********************************************************\n");

printf(" 链表综合练习程序\n\n");

printf("***********************************************************\n");

while(1)

{ printf("请输入操作命令,(输入help查看帮助):\n");

scanf("%s",command);

if(strcmp(command,"exit")==0) break; //输入exit结束循环

else if(strcmp(command,"insert")==0) insert();

else if(strcmp(command,"show")==0) show();

else if(strcmp(command,"insert")==0) insert();

else if(strcmp(command,"del")==0) del();

else if(strcmp(command,"help")==0)

{ printf("命令名\t\t\t命令说明\n\n");

printf("help \t\t\t查看帮助\n");

printf("show \t\t\t显示内容\n");

printf("insert\t\t\t插入内容\n");

printf("del \t\t\t删除信息\n");

printf("exit \t\t\t退出程序\n\n");

}

else printf("命令无效,请重新输入.(输入help查看帮助)\n");

}

printf("Bye\n");

}

void show()

{

if(head==NULL)printf("没有任何记录\n\n");

else

{ struct student *i;

printf("学号\t姓名\t分数\n");

for(i=head;i!=NULL;i=i->next)

printf("%ld\t%s\t%.2f\n",i->number,i->name,i->score);

printf("共有%d条学生记录\n\n",sum);

}

}

void insert()

{

printf("请按以下格式依次软每项,各项用空格分开\n");

printf("学号\t姓名\t分数\n");

struct student *i,*p,*j;

p=(struct student *)malloc(sizeof(struct student));

scanf("%ld%s%f",&p->number,p->name,&p->score);

if(head==NULL){head=p;head->next=NULL;} //链表为空时

else

{ for(i=head;i->next!=NULL && p->number>i->number;j=i,i=i->next);

if(p->number<=i->number)

{ if(i==head)head=p; //插到最前面

else j->next=p; //插到中间

p->next=i;

}

else

{ p->next=NULL;

i->next=p;

}

}

sum++;

printf("操作成功\n\n");

}

void del()

{

if(head==NULL)printf("错误:尚未输入任何记录\n"); //链表为空时

else

{ long number;

struct student *i,*j;

printf("请输入要删除的学生的学号:");

scanf("%ld",&number);

for(i=head;i->next!=NULL && i->number!=number;j=i,i=i->next);

if(i->number==number)

{ if(i==head)head=i->next;

else j->next=i->next;

sum--;

free(i);

printf("删除成功\n\n");

}

else printf("未找到输入的学号,请核对后输入\n");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值