天津理工大学c语言实验报告8,【最新精品版】天津理工大学 c语言上机报告8.doc...

62e50291a81fc54b507f33cb80033297.gif 【最新精品版】天津理工大学 c语言上机报告8.doc

(12页)

684dcd9b2886ebc78ae57e38848c0bc1.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

计算机与通信工程学院计算机与通信工程学院天津理工大学天津理工大学计算机与通信工程学院计算机与通信工程学院实验报告实验报告 (试做)(试做)2009 至至 2010 学年学年 第第 一一 学期学期课程名称课程名称高级程序设计语言高级程序设计语言 I学号学号学生姓名学生姓名年级年级专业专业教学班号教学班号实验地点实验地点实验时间实验时间 20 年年 月月 日日 第第 节节 至至 第第 节节主讲教师主讲教师孙世温孙世温辅导教师辅导教师计算机与通信工程学院计算机与通信工程学院2实验(八)实验(八)实验名称实验名称结构体和联合结构体和联合 软件环境软件环境Win XP、Visual C++ 6.0 硬件环境硬件环境PC 实验目的实验目的 ((1 1)) 掌握结构体类型的定义和使用;掌握结构体类型的定义和使用; ((2 2)) 掌握结构体类型变量的概念和使用;掌握结构体类型变量的概念和使用; ((3 3)) 掌握链表的概念,初步学会对链表进行操作;掌握链表的概念,初步学会对链表进行操作; ((4 4)) 掌握共用体的概念和使用;掌握共用体的概念和使用; ((5 5)) 进一步熟悉进一步熟悉 VisualVisual C++6.0C++6.0 开发环境下调试程序的基本步骤。开发环境下调试程序的基本步骤。 实验内容(应包括实验题目、实验要求、实验任务等)实验内容(应包括实验题目、实验要求、实验任务等) ((1))利用顺序表实现利用顺序表实现““先进后出先进后出””的堆栈的堆栈 ?结构体定义: // 结构体 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); //自顶向下显示堆栈中的元素((2))已知学生基本信息由学号已知学生基本信息由学号(长整型长整型)、姓名、姓名(字符数组字符数组)、性别、性别(字符型字符型)、年龄、年龄(整型整型)组组 成。定义如下结构类型:成。定义如下结构类型: ?结构体定义: // 定义结构体:存储学生基本信息 struct STUDENT_NODE { long int id; char name[MAX_LEN]; char sex; int age;// 指针指向下一个结点,用以形成链表 STUDENT_NODE *next; }; //定义结构体:存储单向链表 struct STUDENT_LINK{ STUDENT_NODE *top; };计算机与通信工程学院计算机与通信工程学院3?函数原型: 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)) 学生信息链表学生信息链表计算机与通信工程学院计算机与通信工程学院4附录(可包括源程序清单或其它说明)附录(可包括源程序清单或其它说明)计算机与通信工程学院计算机与通信工程学院5((1)) 顺序堆栈顺序堆栈 ?源代码: #include #include #include #define MAX_LEN 100 // 堆栈元素类型 // 这里采用 typedef 别名机制,便于修改为别的类型, 如: typedef double ELEMENT; typedef int ELEMENT; // 结构体 Stack struct Stack{ ELEMENT * List; // 用来存储元素的顺序表 int curNumber; // 用来存储当前元素的总个数 }; void iniStack(struct Stack * A); // 初始化堆栈 void clearStack(struct Stack * A); //清空堆栈 void push(struct Stack * A, ELEMENT obj);//将元素 obj 压入堆栈的栈顶 void pop(struct Stack * A);//将当前栈顶的元素弹出栈。要求:栈不为空 ELEMENT get_top(struct Stack * A); //返回当前栈顶的元素值。要求:栈不为空 int is_empty(struct Stack * A); //判断当前堆栈是否为空,空返回 1,非空返回 0 void display(struct Stack * A); //自顶向下显示堆栈中的元素 void main() { const int max_input=5; //用户输入的次数 int loop; ELEMENT user_input;struct Stack * S=(struct Stack*)malloc(sizeof(struct Stack)); //申请一个堆栈对象 // 初始化 iniStack(S);for(loop=1;loopList=(ELEMENT *)malloc(sizeof(ELEMENT)*MAX_LEN); A-curNumber=0; } } /* 清空堆栈 */ void clearStack(struct Stack * A) { if(A!=NULL) { free(A-List); A-curNumber=0; } } /*将元素 obj 压入以 top 为栈顶的堆栈的栈顶 */ void push(struct Stack * A, ELEMENT obj) { if(A-curNumberMAX_LEN) { printf(“ \n 堆栈中的元素总数超过最大容量 ! \n“); return; } A-List[A-curNumber]=obj; A-curNumber++; }计算机与通信工程学院计算机与通信工程学院7/* 将当前栈顶的元素弹出栈。要求:栈不为空 */ void pop(struct Stack * A) { if(!is_empty(A)) { A-curNumber--; } } /* 返回当前栈顶的元素值。要求:栈不为空 */ ELEMENT get_top(struct Stack * A) { if(is_empty(A)) { printf(“Error: Get top from empty stack. \n“); exit(1);//终止程序} return A-List[A-curNumber-1]; } /* 判断当前堆栈是否为空,空返回 1,非空返回 0 */ int is_empty(struct Stack * A) { return (A-curNumber==0); } /* 自顶向下显示堆栈中的元素 */ void display(struct Stack * A) { int i; printf(“ Stack 中的元素 自顶向下 为: \n“); for(i=A-curNumber-1;i=0;i--) { printf(“%d \n“,A-List[i]); } } ((2)) 学生信息链表学生信息链表计算机与通信工程学院计算机与通信工程学院8?源代码: void main() { STUDENT_LINK* tjut; tjut=new STUDENT_LINK; iniStudentLink(tjut); Add(tjut,2007002,“Tom“,'M',19); Add(tjut,2007007,“Jack“,'M',20); Add(tjut,2007004,“Mary“,'F',20); ShowALL(tjut); Modify(tjut,2007002,“Tom Smith“,'M',19); Search(tjut,2007002); Delete(tjut,2007004); ShowALL(tjut); clearStudentLink(tjut); delete tjut; } // /* 初始化学生链表 */ void iniStudentLink(STUDENT_LINK * L) { L-top=new STUDENT_NODE; //top 结点是个内容为空的“结点“,注意其 作用 L-top-id=0; L-top-next=NULL; } /* 清空学生链表 */ void clearStudentLink(STUDENT_LINK * L) { STUDENT_NODE *ptr; while(L-top != NULL) { ptr=L-top; L-top=L-top-next; delete ptr; } return; } /*判断该学号的学生信息是否存在: 存在返回 1,不存在返回 0 */计算机与通信工程学院计算机与通信工程学院9int isExist(STUDENT_LINK * L,long int id) { int exist; STUDENT_NODE *ptr;exist=0; ptr=L-top; while(ptr!=NULL) { if(id==ptr-id) //此学生信息已存在 { exist=1; break; } ptr=ptr-next; } return exist; } /*添加一个新同学的信息 */ int Add(STUDENT_LINK * L, long int id,char name[],char sex, int age) { int error; int exist; STUDENT_NODE *ptr; STUDENT_NODE *node;error=0; exist=isExist(L,id); if(exist==1) { error=1; couttop; while((ptr-next!=NULL) } node=new STUDENT_NODE; node-id=id;计算机与通信工程学院计算机与通信工程学院10strcpy(node-name,name); node-sex=sex; node-age=age;//新结点插入到 ptr 结点之后 node-next=ptr-next; ptr-next=node; couttop; while((ptr!=NULL) }// 修改 ptr 中的信息 strcpy(ptr-name,name); ptr-sex=sex; ptr-age=age;couttop; while((ptr-next!=NULL) } //结点 ptr-next 就是要删除的结点 node=ptr-next; ptr-next=ptr-next-next; delete node; couttop; while((ptr!=NULL) } // 结点 ptr 中就是要找的结点的信息 coutidnamesexagetop-next; k=1; while(ptr!=NULL) { // 结点 ptr 中就是要找的结点的信息 coutidnamesexagenext; k++; } cout“************** 共有 “k-1“ 个学生 ********************\n\n“endl; } 关 键 词: 最新 精品 天津 理工大学 语言 上机 报告 8. doc

524d6daf746efaa52c3c71bbfe7ba172.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值