链栈实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
姓名:方钢学号:专业:电子商务班级:10—1班
指导教师:实验时间:实验地点:新区实验楼四楼
(实验题目)链栈实验报告
1.实验内容和要求
1.1实验要求
①本次实验中,链栈使用带头结点的单链表实现。
②链栈结构定义,算法实现全部放入库函数“linkStack.h”中;
③各运算和变量命名直观易懂,并有相应的注释。
1.2实验内容
<1>初始化一个链栈。
<2>判断是否空栈。
<3>入栈
<4>取栈顶元素
<5>出栈
<6>将10进制数转换为16进制数
2.实验目的
①掌握栈的基本概念。
②掌握链栈的建立、入栈和出栈等方法。
③根据具体问题的需要,设计出合理的表示数据的结构,并设计相
关算法。
3.数据结构设计
3.1
<1>初始化一个链栈。
<2>判断是否空栈。
<3>入栈
<4>取栈顶元素
<5>出栈
算法:
int main(int argc, char* argv[])
{
node* H, *L, *P,*q;
int y;
initialstack(L);//初始化
if(stackEmpty(L))
cout<<"空栈"< else cout<<"栈不空"< cout<<"尾插法创建带头结点的单链表>>"< //以“9999”作为结束元素输入条件,用引用参数返回链表 pushstack( L ); H=L->next;//H为头指针 cout<<"入栈元素顺序为:"; P=L->next; while(P) { cout< P=P->next; } cout< popstack(H); L->next=H; cout<<"出栈后元素顺序为:"; P=H; while(P) { cout< P=P->next; } cout< if(stacktop(H,q)) { y=q->data; cout<<"栈顶元素"< } destroyList(L); return 0; } 截图: 3.2 算法: int main(int argc, char* argv[]) { node *p,*L,*H; initialstack(L); int M,x; char a,b,c,d,e,f; cout<<"输入一个10进制数:"; cin>>M; Tentosixteen(&M,L); H=L->next; cout<<"入栈元素顺序为:"; p=L->next; while(p) { cout< p=p->next; } cout< popstack(H); L->next=H; cout<<"输出一个16进制数:OX"; p=H; while(p) { x=p->data; switch(x) { case 97: cout<<"A"; break; case 98: cout<<"B"; break; case 99: cout<<"C"; break; case 100: cout<<"D"; break; case 101: cout<<"E"; break; case 102: cout<<"F"; break; default: cout< } p=p->next; } cout< destroyList(L); return 0; } 截图: 4.总结和心得 1>通过链栈的上机操作明白了代码在内存中的实现过程,理解了进制转换在 内存中的实现方式; 2>使用了switch—case来判断命名ABCDEF