#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语言单链表的应用,单链表应用相关推荐

  1. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  2. c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

    「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...

  3. c语言单链表功能,[数据结构]单链表(C语言)的各种功能

    06-03阅读200,000 + 链表是一种常见的基本数据结构,在此充分利用了结构指针. 链表可以动态存储和分配,即链表是一个功能非常强大的数组. 他可以在节点中定义多种数据类型,并可以根据需要随意添 ...

  4. c语言单链表设计报告,单链表实验报告

    <数据结构>实验报告二 分校: 学号: 日期: 班级: 姓名: 程序名: L2311.CPP 一.上机实验的问题和要求: 单链表的查找.插入与删除.设计算法,实现线性结构上的单链表的产生以 ...

  5. c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母

    C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...

  6. C语言不带头结点的单链表

    C语言不带头结点的单链表 #include <stdio.h> #include <stdlib.h> #include <stdbool.h>typedef st ...

  7. C语言-线性表基本操作之单链表

    下面是单链表的基本操作: #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct L ...

  8. c语言带头节点单链表创建,C语言建立带头结点的单链表

    满意答案 TS老妹儿 2017.08.31 采纳率:57%    等级:9 已帮助:1719人 单链表的生成有2种方式:头插法和尾插法. 1.头插法/************************* ...

  9. 单表带换密码C语言程序,帮忙写个C语言程序!题目在下面!关于链表的。还没学,题目:“建立一个链表,逐个输入字符,每一个字符存放在一个链。...

    帮忙写个C语言程序!题目在下面!关于链表的.还没学,题目:"建立一个链表,逐个输入字符,每一个字符存放在一个链. Posted By : Admin 2016-05-16 21:16 网友问 ...

  10. 【数据结构链表】之五单链表

    一:链表基础 1.链表基础----------------摘录自百度百科 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中 ...

最新文章

  1. KNN识别手写体数字
  2. oracle java 绑定变量的值_Oracle SQL调优之绑定变量用法简介
  3. c++17新特性_每个开发者都应该了解的一些C++特性
  4. 苹果、联想及华硕均看准美国电脑运输的增长
  5. selenium 替代品_每个人都在谈论Selenium替代品-明智地选择!
  6. java学习(56):接口之间的继承续
  7. python解zuobiaoxi方程_滑坡稳定性分析程序初探---Python版!
  8. 【算法】剑指 Offer 03. 数组中重复的数字
  9. Q130:PBRT-V3,非均匀介质的采样(11.3.3章节、15.2.2章节)
  10. 计算机大一新生打字速度,打字速度比赛策划书5篇.doc
  11. 几何分布的期望和方差公式推导_常用概率分布总结(1)
  12. 中文期刊分类(blog版)
  13. 揭示模式(Revealing Module)
  14. python模拟抛硬币_1-简单的Python程序-模拟抛硬币
  15. 修己,以清心为要。涉世,以慎言为先。
  16. 工业互联 智造未来 “2018 智造中国峰会•上海松江” 在上海市松江区隆重召开
  17. Google电话面试都问什么问题?
  18. linux系统桌面文件消失,Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
  19. html免费编辑器图片alt,织梦模板kindeditor编辑器图片上传增加图片说明alt属性和title属性...
  20. 2020新基建人才薪资:工业互联网月薪1.81万元居首,超5G、人工智能

热门文章

  1. mysql中修改表的还原命令_MySQL的增、删、改、查和备份、恢复的命令
  2. TortoiseGit使用入门
  3. js 利用数组队列模拟多线程操作
  4. Difference between Win-builds vs MinGW-builds
  5. 网站被k的症状原因有哪些-怎么恢复
  6. 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误
  7. 学科前沿技术专题结课作业
  8. asp.net 下载大文件
  9. Zygo读取保存dat文件(光学领域知道Zygo的一定要看)
  10. java web应用程序_说说Java Web中的Web应用程序|乐字节