计算机与通信工程学院
PAGE
PAGE 12
计算机与通信工程学院
天津理工大学
计算机与通信工程学院
实验报告
(试做)
2009 至 2010 学年 第 一 学期
课程名称
高级程序设计语言 I
学号
学生姓名
年级
专业
教学班号
实验地点
实验时间
20 年 月 日 第 节 至 第 节
主讲教师
孙世温
辅导教师
实验(八)
实验名称
结构体和联合
软件环境
Win XP、Visual C++ 6.0
硬件环境
PC
实验目的
掌握结构体类型的定义和使用;
掌握结构体类型变量的概念和使用;
掌握链表的概念,初步学会对链表进行操作;
掌握共用体的概念和使用;
进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。
实验内容(应包括实验题目、实验要求、实验任务等)
利用顺序表实现“先进后出”的堆栈
结构体定义:
// 结构体 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); //自顶向下显示堆栈中的元素
已知学生基本信息由学号(长整型)、姓名(字符数组)、性别(字符型)、年龄(整型)组成。定义如下结构类型:
结构体定义:
// 定义结构体:存储学生基本信息
struct STUDENT_NODE {
long int id;
char name[MAX_LEN];
char sex;
int age;
// 指针指向下一个结点,用以形成链表
STUDENT_NODE *next;
};
//定义结构体:存储单向链表
struct STUDENT_LINK{
STUDENT_NODE *top;
};
函数原型:
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); // 从头到尾,输出当前所有的同学信息
实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)
顺序表实现堆栈
运行结果
学生信息链表
附录(可包括源程序清单或其它说明)
顺序堆栈
源代码:
#include
#include
#include
#define MAX_LEN 100
// 堆栈元素类型
// 这里采用 typedef 别名机制,便于修改为别的类型, 如: typedef double ELEMENT;
typedef int ELEMENT;
// 结构体 Stack
struct Stack{
ELEMENT * List; // 用来存储元素的顺序表
int curNumber; // 用来存储当前元素的总个数
};
void iniStack(st