问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

单链表的建立和删除!

发布网友 发布时间:2022-05-26 17:27

我来回答

1个回答

热心网友 时间:2023-10-06 13:49

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define N 3
typedef struct node
{
char name[20];
int sno;
int score;
struct node *link;
}stud;

stud * creat(int n)
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
h->name[0]='\0';
h->link=NULL;
p=h;
for(i=0;i<n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
p->link=s;
printf("请输入第%d个人的姓名",i+1);
scanf("%s",s->name);
printf("请输入第%d个人的学号",i+1);
scanf("%d",&s->sno);
printf("请输入第%d个人的成绩",i+1);
scanf("%d",&s->score);
s->link=NULL;
p=s;
}
return(h);
}

stud * search(stud *h,char *x)
{
stud *p;
char *y;
p=h->link;
while(p!=NULL)
{
y=p->name;
if(strcmp(y,x)==0)
return(p);
else p=p->link;
}
if(p==NULL)
printf("没有查找到该数据!");
}

stud * search2(stud *h,char *x)
{
stud *p,*s;
char *y;
p=h->link;
s=h;
while(p!=NULL)
{
y=p->name;
if(strcmp(y,x)==0)
return(s);
else
{
p=p->link;
s=s->link;
}
}
if(p==NULL)
printf("没有查找到该数据!");
}

void insert(stud *p)
{
char stuname[20];
stud *s;
if((s= (stud *) malloc(sizeof(stud)))==NULL)
{
printf("不能分配内存空间!");
exit(0);
}
printf("\n请输入你要插入的人的姓名:");
scanf("%s",stuname);
strcpy(s->name,stuname);
printf("\n请输入你要插入的人的学号");
scanf("%d",&s->sno);
printf("\n请输入你要插入的人的成绩");
scanf("%d",&s->score);
s->link=p->link;
p->link=s;
}

void del(stud *x,stud *y)
{
stud *s;
s=y;
x->link=y->link;
free(s);
}

void print(stud *h)
{
stud *p;
p=h->link;
printf("数据信息为:\n");
while(p!=NULL)
{
printf("姓名:%s\n学号:%d\n成绩:%d\n",&*(p->name),p->sno,p->score);
p=p->link;
}
}

void quit()
{
exit(0);
}

void menu(void)
{
printf("\t\t\t单链表C语言实现实例\n");
printf("\t\t|————————————————|\n");
printf("\t\t| |\n");
printf("\t\t| [1] 建 立 新 表 |\n");
printf("\t\t| [3] 插 入 数 据 |\n");
printf("\t\t| [4] 删 除 数 据 |\n");
printf("\t\t| [5] 打 印 数 据 |\n");
printf("\t\t| [6] 退 出 |\n");
printf("\t\t| |\n");
printf("\t\t| 如未建立新表,请先建立! |\n");
printf("\t\t| |\n");
printf("\t\t|————————————————|\n");
printf("\t\t 请输入你的选项(1-6):");
}

int main()
{
int choose;
stud *head,*searchpoint,*forepoint;
char fullname[20];
while(1)
{
menu();
scanf("%d",&choose);
switch(choose)
{
case 1:head=creat(N);
break;
case 3: printf("输入你要在哪个人后面插入:");
scanf("%s",fullname);
searchpoint=search(head,fullname);
printf("你所查找的人的姓名为:%s",*&searchpoint->name);
insert(searchpoint);
print(head);
printf("\n按回车键回到主菜单。");
getchar();getchar();
break;
case 4:print(head);
printf("\n输入你所要删除的人的姓名:");
scanf("%s",fullname);
searchpoint=search(head,fullname);
forepoint=search2(head,fullname);
del(forepoint,searchpoint);
break;
case 5:print(head);
printf("\n按回车键回到主菜单。");
getchar();getchar();
break;
case 6:quit();
break;
default:printf("你输入了非法字符!按回车键回到主菜单。");

menu();
getchar();
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“泛览周王传”的出处是哪里 避事的意思是什么 怠息的意思是什么 “偷闲来此一嚬呻”的出处是哪里 怠息意思和来源是什么 客厅中间沙发旁旁边放什么 客厅沙发旁边放什么合适 沙发左右摆什么位置 淘宝网无法注册邮箱验证 谁能帮我注册一个谷歌帐号,我一直注册不成功,淘宝上也买不到,在线等... 小米红米手机抢购的页面是哪个? 抢购红米在小米官网哪个页面刷新 S0D酵素粉什么时候吃比较好 创建一个单链表,要能运行成功的代码 英语与生活有什么联系? 用C语言代码创建一个单链表,包含(1)创建链表(2)求表长(3)链表的查找(4)链表的插入(5)链 市场营销环境分析方法除了swot分析方法,还有什么方法? 与谁保持联系用英语怎么说 关于“单链表操作”的代码及部分说明?(要求如下)满意再追加分! 与…取得联系 英语词组 翻译英语 与…联系 为中华之崛起而读书手抄报内容? 把……和……联系在一起 英语词组 英语翻译 与什么什么有紧密联系 怎么说?是不是be bond with? 把什么和什么联系在一起,用英语怎么说 与 有联系英语beconnect 与...有联系 英语词组,有3个是什么? 与……有联系英语六种说法 与...有联系用英语怎么说 英语翻译与什么什么有紧密联系 怎么说 有木有抢购小米成功的高手丫?整点抢购的时候是从哪个界面进去的啊? 请问:在微信上抢购小米手机,通过什么途径进入抢购界面,抢购界面在哪?什么样子? 创建单链表 2月11日小米抢购在那个页面 小米3是在这个页面上抢购吗?求大神指导 小米4怎么抢购 单链表代码 编写算法分别将单链表的创建,插入和删除用C语言实现 中学生应该绑多重的绑手沙袋和绑腿沙袋? 刚过满月孩子有点鼻子不通气怎么办啊? 中学生腿上绑沙袋应该绑多少斤的 用背包和绑腿的沙袋做负重锻炼对身体有什么危害?我今年十八岁了,记住是用背包来负重锻炼,要详细的回... 场景作文200字 三年级作文两百字场面描写玩快递员 我要一篇场景作文200字 依旧是最靓的仔,到店实拍新阿特兹 依旧是最靓的仔,到店实拍爱车阿特兹的魅力外观! 新款马自达6阿特兹旅行版 什么时候上市 网站运营者必须分析数据了解用户需求 基本不等式是内容什么