当前位置:文档之家› c语言上机实验实验八

c语言上机实验实验八

实验八
(2018-12-12~2018-12-17)
一、实验名称:
结构体
二、实验目的:
(1)掌握结构体类型的定义和使用;
(2)掌握结构体类型变量的概念和使用;
(3)掌握链表的概念,初步学会对链表进行操作;
(4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。

三、实验项目(必做题)
本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。

(1)利用顺序表实现“先进后出”的堆栈
提示:定义结构体struct来定义堆栈;采用动态数组实现顺序表;定义函数实现堆栈中元素的压入和弹出,保证“先进后出”的实现
// 结构体Stack
struct Stack{
int * List; // 用来存储元素的顺序表
int curNumber; // 用来存储当前元素的总个数
};
void iniStack(Stack * A); // 初始化堆栈
void clearStack(Stack * A); //清空堆栈
void push(Stack * A, ELEMENT obj); //将元素obj压入堆栈的栈顶
void pop(Stack * A); //将当前栈顶的元素弹出栈。

要求:栈不为空
ELEMENT get_top(Stack * A); //返回当前栈顶的元素值。

要求:栈不为空
int is_empty(Stack * A); //判断当前堆栈是否为空,空返回1,非空返回0
void display(Stack * A); //自顶向下显示堆栈中的元素
测试实例:
向堆栈中压入:1 2 3 4 弹出次序应为:4 3 2 1
注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。

(2)已知学生基本信息由学号(长整型)、姓名(字符数组)、性别(字符型)、年龄(整型)组成。

定义如下结构类型:// 定义结构体:存储学生基本信息
struct STUDENT_NODE {
long int id;
char name[MAX_LEN];
char sex;
int age;
// 指针指向下一个结点,用以形成链表
STUDENT_NODE *next;
};
//定义结构体:存储单向链表
struct STUDENT_LINK{
STUDENT_NODE *top;
};
应用上述结构类型,编程实现:建立一个结点按学号顺序存储学生信息的单向链表,并实现依据学号对链表的添加、修改、删除和检索功能;添加新结点后,应继续保持结点按学号顺序的链接方式。

分别定义函数实现链表的初始化、链表的打印输出、以及在链表中添加、修改、删除和检索节点的功能;最后在main()中进行测试输出。

提示:定义函数实现链表的初始化、链表的打印输出、以及在链表中添加、修改、删除和检索节点的功能
void iniStudentLink(STUDENT_LINK * L); // 初始化学生链表
void clearStudentLink(STUDENT_LINK * L); //清空学生链表
int isExist(STUDENT_LINK * L, long int id); // 判断该学号的学生信息是否存在
int Add(STUDENT_LINK * L,long int id,char name[],char sex, int age); //添加一个新同学的信息
int Modify(STUDENT_LINK * L, long int id,char name[],char sex, int age); // 根据学号,修改该同学的信息
int Delete(STUDENT_LINK * L, long int id); // 根据学号,从链表中删除该同学的信息
int Search(STUDENT_LINK * L,long int id); // 根据学号,输出显示该同学信息
void ShowALL(STUDENT_LINK * L); // 从头到尾,输出当前所有的同学信息
注意:要求首先建立项目文件,然后建立源程序文件进行编辑、调试。

四、实验项目(选做题)
(1)课件以及教材中的一些示例程序。

(2)教材P318页开始习题:11.1, 11.8, 11.10, 11.12。

相关主题