实验1线性链表的操作.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验1线性链表的操作

实验1:线性链表的操作 实验目的 1、通过实验,掌握链表的输入与输出 2、通过实验,掌握链表的基本操作 实验内容 1、建立自己的有关链表的头文件 2、练习链表的输入与输出 3、练习链表的基本操作的实现 4、练习链表基本操作的应用 实验前的准备 1、复习相关课程内容,理解并掌握链表基本操作算法 2、准备相关的程序清单 3、 实验步骤与方法 (一)理解并运行下面的程序 将用户输入的数据按头插法建立一个带头结点的单链表。输入结点数据时以输入一串字符的方式实现,$字符为结束输入字符。 #include? “datastru.h” #include? stdio.h   #include? malloc.h ? int count_head(LINKLIST *head){ /*:输出单链表元素值并计数*/ ? int I = 0; ? LINKLIST *p; ? p = head-next; ? printf(“输出单链表元素值 : “); ? while(p != NULL) ?? {printf(“? %c”,p-data); I++; p = p-next;} ? printf(“\n”); ? return I; } ? LINKLIST *creatlink_head_head(LINKLIST *head) { /*用头插入法建立带头结点的单链表*/ ? LINKLIST? *t; ??char ch; ? t = (LINKLIST *)malloc(sizeof(LINKLIST)); ? head = t; ? t-next = NULL; ? printf(“单链表元素值为单个字符, 连续输入,$为结束字符? : “); ? while((ch = getchar())!= ‘$’) ?? {t = (LINKLIST *) malloc(sizeof(LINKLIST)); t-data = ch; t-next = head-next; head-next = t;} ? return(head); } ? main() ?{ LINKLIST *head = NULL; ?? int num; ? ?? printf(“\n??? 建立单链表\n\n”); ?? head = creatlink_head_head(head); ?? fflush(stdin); ?? num = count_head(head); ?? printf(“单链表元素个数 = %d\n”, num); } 运行情况如下: 输入: 输出: ? (二)建立自己的头文件mylinklist.h,内容包括单链表数据结构的说明,链表的建立与输出、插入与删除操作等 ? ?(三)完成单链表的综合实验 具体问题:以线性链表为数据模型,实现“班级成绩表管理程序”: 1、每条学生记录包括:学号、姓名、成绩。 2、从键盘输入学生信息建立链表; 3、打印链表中所有记录内容; 4、向链表中添加一个学生记录; 5、根据输入的学号,删除该学号的学生记录; 6、从已有文件中读入学生信息,建立链表(提高) 7、将链表中的学生信息存入文件。(提高) 要求: 模块化设计,先将链表类型实现,然后在此基础上就具体问题进行处理(操作) 程序健壮、可读性强、运行界面尽可能友好。 2周完成。 本程序所用的学生记录结构类型为: ??? #define Equal 1; ??? #define Unequal 0; ??? typedef struct STU{ ??????? char stuno[10]; ???? ?? char name[20]; ????????float score; ??????? struct STU *next; ???? }LNode; 综合实验的框架: #include stdio.h typedef struct node { ?? char stuno[20]; ?? char name[10]; ?? int score; ?? struct node *next; }Lnode; Lnode* CreateList(int n); //输入学生数据,创建学生信息表 void print(Lnode *L); //打印学生数据 Lnode* getnode(Lnode *L,int i); //取第i个学生记录,返回其地址 Lnode *GetnodeByno(Lnode *L,char stuno1[]); //按照学号,查找某个学生,返回其地址 Lnode *Priornode(Lnode *L,Lnode *p); //查找某个学生结点的前驱结点,返回其指针 void insert(Lnode

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档