C语言单链表的应用,单链表应用
#include
#include
#include
struct student
{
char num[12];
char name[20];
char sex[4];
int score;
struct student *next;
};
int menu_s()
{
int choice ;
printf(“\n 学生信息管理系统\n”);
printf(“========================================
=\n”);
printf(“ 1.学生信息库的建立\n”);
printf(“ 2.插 入 学 生 信 息\n”);
printf(“ 3.查 询 学 生 信 息\n”);
printf(“ 4.删 除 学 生 信 息\n”);
printf(“ 5.输 出 所有学生信息\n”);
printf(“========================================
==\n”);
printf(“请选择1-5:\n”);
for(;;)
{
scanf(“%d”,&choice);
if (choice<0 || choice>5)
printf(“\n\t输入错误,重选1-5\n”);
else
break; /*跳出循环体*/
}
return choice;
}
void addlist(struct student**HL)
{
struct student* newp;
newp=(struct student*)malloc(sizeof(struct student));
if(newp==NULL)
{
printf(“内存空间用完,退出\n”);
exit(1);
}
printf(“请输入学生的学号,姓名,性别,分数,以空格隔开
\n”);
scanf(“%s%s%s%d”,newp->num,newp->name,newp-
>sex,&newp->score);
newp->next=NULL;
if(*HL==NULL)
*HL=newp;
else
{
struct student* p=*HL;
while(p->next!=NULL)
p=p->next;
p->next=newp;
}
printf(“插入完毕\n”);
}
void dellist(struct student** HL)
{
char num1[12];
char name1[20];
int i=0,choice;
struct student* cp=*HL;
struct student* ap=NULL;
printf(“===========================\n”);
printf(“1、按学号删除\n”);
printf(“2、按姓名删除\n”);
printf(“===========================\n”);
printf(“ 请选择: “);
fflush(stdin);
scanf(“%d”,&choice);
if (choice==1)
{
printf(“请输入要删除学生的学号:”);
scanf(“%s”,num1);
if(cp==NULL)
{
printf(“信息库为空,不能删除\n”);
return;
//exit(1);
}
while(cp!=NULL)
{
i++;
if (strcmp(num1,cp->num)==0)
break;
ap=cp;cp=cp->next;
}
if(cp==NULL)
{
printf(“无该生信息”);
return;
//exit(1);
}
if(i==1)
*HL=cp->next;
else
ap->next=cp->next;
free(cp);
printf(“已经删除成功^_^!!!\n”);
}
else if (choice==2)
{
printf(“请输入要查找学生的姓名:\n”);
scanf(“%s”,name1);
if(cp==NULL)
{
printf(“信息库为空,不能删除\n”);
return;
//exit(1);
}
while(cp!=NULL)
{
i++;
if (strcmp(name1,cp->name)==0)
break;
ap=cp;cp=cp->next;
}
if(cp==NULL)
{
printf(“无该生信息”);
return;
//exit(1);
}
if(i==1)
*HL=cp->next;
else
ap->next=cp->next;
free(cp);
printf(“已经删除成功^_^!!!!!!\n”);
}
}
void creat(struct student **HL )
{
int n=0;
int i=0;
*HL = NULL;
struct student* newp;
printf(“学生人数,请输入:\n”);
scanf(“%d”,&n);
for (i=1;i<=n;i++)
{
newp=(struct student
*)malloc(sizeof(struct student));
if(newp==NULL)
{printf(“内存空间用完,退出\n”);
exit(1);
}
printf(“请输入学生%d的学号,姓名,性别,分
数,以逗号隔开\n”,i);
scanf(“%s %s %s %d”,newp->num,newp-
>name,newp->sex,&newp->score);
newp->next=NULL;
if(*HL==NULL)
*HL=newp;
else
{
struct student* p=*HL;
while(p->next!=NULL)
p=p->next;
p->next=newp;
}
}
printf(“储存完毕\n”);
}
void findlist(struct student *HL)
{
char num1[12];
char name1[20];
int i=0,choice;
printf(“===========================\n”);
printf(“1、按学号查询\n”);
printf(“2、按姓名查询\n”);
printf(“===========================\n”);
printf(“ 请选择: “);
scanf(“%d”,&choice);
if (choice==1)
{
printf(“请输入要查找学生的学号:”);
scanf(“%s”,num1);
while(HL!=NULL)
{
if(strcmp(num1,HL->num)==0)
{
printf(“%s ,%s ,%s ,%d
\n”,HL->num,HL->name,HL->sex,HL->score);
break;
}
else HL=HL->next;
}
if(HL==NULL)
printf(“无该生信息\n”);
}
else if (choice==2)
{
printf(“请输入要查找学生的姓名:”);
scanf(“%s”,name1);
while(HL!=NULL)
{
if(strcmp(name1,HL->name)==0)
{
printf(“%s ,%s ,%s ,%d
\n”,HL->num,HL->name,HL->sex,HL->score);
break;
}
else HL=HL->next;
}
if(HL==NULL)
printf(“无该生信息”);
}
}
void printlist(struct student *HL)
{
if(HL==NULL)
printf(“无信息,请先存储\n”);
while(HL!=NULL)
{
printf(“%s ,%s ,%s ,%d “,HL->num,HL-
>name,HL->sex,HL->score);
HL=HL->next;
printf(“\n”);
}
}
void main()
{
int c;
struct student *SHL;
// HL=0x00431b90;
SHL=NULL;
loop:
switch(menu_s())
{
case 1:
printf(“**************************************\n”);
printf(“ 学生信息库的建
立 \n”);
printf(“***************************************\n”);
creat(&SHL) ;
break;
case 2:
printf(“**************************************\n”);
printf(“插入学生信息\n”);
addlist(&SHL);
break;
case 3:
printf(“**************************************\n”);
printf(“查询学生信息\n”);
printf(“**************************************\n”);
findlist(SHL);
break;
case 4:
printf(“**************************************\n”);
printf(“删除学生信息\n”);
printf(“**************************************\n”);
dellist(&SHL);
break;
case 5:
printf(“**************************************\n”);
printf(“输出所有学生信息\n”);
printf(“**************************************\n”);
printlist(SHL);
break;
}
printf(“按1继续,按2退出”);
scanf(“%d”,&c);
if(c==1)
goto loop;
else
printf(“再见!\n”);
exit(1);
}
C语言单链表的应用,单链表应用相关推荐
- 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置
<(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...
- c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...
「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...
- c语言单链表功能,[数据结构]单链表(C语言)的各种功能
06-03阅读200,000 + 链表是一种常见的基本数据结构,在此充分利用了结构指针. 链表可以动态存储和分配,即链表是一个功能非常强大的数组. 他可以在节点中定义多种数据类型,并可以根据需要随意添 ...
- c语言单链表设计报告,单链表实验报告
<数据结构>实验报告二 分校: 学号: 日期: 班级: 姓名: 程序名: L2311.CPP 一.上机实验的问题和要求: 单链表的查找.插入与删除.设计算法,实现线性结构上的单链表的产生以 ...
- c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母
C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...
- C语言不带头结点的单链表
C语言不带头结点的单链表 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>typedef st ...
- C语言-线性表基本操作之单链表
下面是单链表的基本操作: #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct L ...
- c语言带头节点单链表创建,C语言建立带头结点的单链表
满意答案 TS老妹儿 2017.08.31 采纳率:57% 等级:9 已帮助:1719人 单链表的生成有2种方式:头插法和尾插法. 1.头插法/************************* ...
- 单表带换密码C语言程序,帮忙写个C语言程序!题目在下面!关于链表的。还没学,题目:“建立一个链表,逐个输入字符,每一个字符存放在一个链。...
帮忙写个C语言程序!题目在下面!关于链表的.还没学,题目:"建立一个链表,逐个输入字符,每一个字符存放在一个链. Posted By : Admin 2016-05-16 21:16 网友问 ...
- 【数据结构链表】之五单链表
一:链表基础 1.链表基础----------------摘录自百度百科 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中 ...
最新文章
- KNN识别手写体数字
- oracle java 绑定变量的值_Oracle SQL调优之绑定变量用法简介
- c++17新特性_每个开发者都应该了解的一些C++特性
- 苹果、联想及华硕均看准美国电脑运输的增长
- selenium 替代品_每个人都在谈论Selenium替代品-明智地选择!
- java学习(56):接口之间的继承续
- python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!
- 【算法】剑指 Offer 03. 数组中重复的数字
- Q130:PBRT-V3,非均匀介质的采样(11.3.3章节、15.2.2章节)
- 计算机大一新生打字速度,打字速度比赛策划书5篇.doc
- 几何分布的期望和方差公式推导_常用概率分布总结(1)
- 中文期刊分类(blog版)
- 揭示模式(Revealing Module)
- python模拟抛硬币_1-简单的Python程序-模拟抛硬币
- 修己,以清心为要。涉世,以慎言为先。
- 工业互联 智造未来 “2018 智造中国峰会•上海松江” 在上海市松江区隆重召开
- Google电话面试都问什么问题?
- linux系统桌面文件消失,Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
- html免费编辑器图片alt,织梦模板kindeditor编辑器图片上传增加图片说明alt属性和title属性...
- 2020新基建人才薪资:工业互联网月薪1.81万元居首,超5G、人工智能
热门文章
- mysql中修改表的还原命令_MySQL的增、删、改、查和备份、恢复的命令
- TortoiseGit使用入门
- js 利用数组队列模拟多线程操作
- Difference between Win-builds vs MinGW-builds
- 网站被k的症状原因有哪些-怎么恢复
- 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误
- 学科前沿技术专题结课作业
- asp.net 下载大文件
- Zygo读取保存dat文件(光学领域知道Zygo的一定要看)
- java web应用程序_说说Java Web中的Web应用程序|乐字节