实验报告三 堆栈的应用

上传人:馨*** 文档编号:140529069 上传时间:2022-08-23 格式:DOC 页数:6 大小:27.50KB
收藏 版权申诉 举报 下载
实验报告三 堆栈的应用_第1页
第1页 / 共6页
实验报告三 堆栈的应用_第2页
第2页 / 共6页
实验报告三 堆栈的应用_第3页
第3页 / 共6页
资源描述:

《实验报告三 堆栈的应用》由会员分享,可在线阅读,更多相关《实验报告三 堆栈的应用(6页珍藏版)》请在装配图网上搜索。

1、 .wd.?数据构造?实验报告三系别: 班级: 学号: 姓名: 日期: 指导教师: 一、上机实验的问题和要求:堆栈是运算受限制的单链表,其插入和删除的操作仅限于在表头位置上进展。本实验主要要求学生掌握堆栈的定义、堆栈的入栈、出栈特性。实验内容:1. 编写一个程序,借助于栈实现将一个存储整型数据元素的单链表倒置。本程序实现时首先应该创立一个单链表,然后将单链表元素结点依次入栈,再依次出栈构成一个新的单链表,借助于单链表的先进后出特性,新构成的单链表是原单链表的反置。2. 编写一个程序,借助于栈实现十进制数和其他进制二,八,十六进制之间的转换。由于十进制转换为其他进制,采取的计算方法是除2/8/1

2、6取余,余数依次入栈,直到商为0为止,然后再将堆栈中的数据依次弹出,构成的新的数据序列,就是进制转换后的结果。二、程序设计的 基本思想,原理和算法描述:包括程序的构造,数据构造,输入/输出设计,符号名说明等三、源程序及注释:1单链表和堆栈之间的相互操作#include stdio.h#include alloc.htypedef int datatype;/*栈结点的定义*/typedef struct node datatype data; struct node * next;linkstack;/*单链表结点的定义*/typedef struct LNode datatype data;

3、 struct LNode *next; * LinkList;/*LinkList La,Lb,Lc;*/void printlk(LinkList L) LinkList p; p=L; while (p) printf(%d - ,p-data); p = p-next; printf(NULLn);void Free_List(LinkList Head) LinkList Pointer; /*节点声明*/ while( Head!=NULL) /*判断链表是否完毕,如果完毕那么完毕循环*/ Pointer=Head; /*将Pointer指针指向链表头节点*/Head=Head-n

4、ext; /*将链表的头指针Head指向下一个节点*/ free(Pointer); /*释放Pointer指针所指节点*/ /*Creat linklist from head node. */LinkList CreatList () int i,n; LinkList L,p,q; p=(LinkList)malloc(sizeof(LinkList); printf(input the head data:); scanf(%d,&p-data); p-next=NULL; L = q = p; printf(Please input the number of data : ); s

5、canf(%d,&n); for (i=0;idata); /*在q指针所指向的结点之后插入新输入的数据结点*/_ _ return L;linkstack *PushLinkStack(LinkList head) linkstack *p,*top; LinkList q; p=(linkstack *)malloc(sizeof(linkstack); top=p; top-data=head-data; top-next=NULL; q=head-next; while(q) p=(linkstack *)malloc(sizeof(linkstack); p-data=q-data;

6、 /*单链表结点数据入栈*/_ return top;LinkList *PopLinkStack(linkstack *top) linkstack *p; LinkList head,q,r; q=(LinkList )malloc(sizeof(LinkList); head=r=q; p=top; q-data=p-data; r-next=NULL; top=top-next; free(p); while(top) q=(LinkList )malloc(sizeof(LinkList); p=top; q-data=p-data; /*在r指针之后插入新出栈的结点数据*/_ _

7、_ top=top-next; free(p); return head;main() LinkList head; linkstack *top; printf(the Linklist is:n); head=CreatList(); /*创立单链表*/ printlk(head); printf(nafter push stack:nn); top=PushLinkStack(head); /*单链表数据入栈*/ printlk(top); printf(nafter pop:nn); head=PopLinkStack(top); /*数据出栈,并存入一单链表*/ printlk(he

8、ad); /*Free_List(top);*/ Free_List(head);2借助于堆栈实现二十进制之间的转换。/*-*/*- this program is for coding transfer-*/*- Writed by shenhua, NEU IIT -*/#include #include #include /* define a stack with single list */struct s_node int data; struct s_node *next;typedef struct s_node s_list;typedef s_list *link;link

9、 stack=NULL;/* print the value of stack */void print_stack() link temp=NULL; temp=stack; if(temp=NULL) printf(the stack is empty!); else while(temp!=NULL) printf(%5d,temp-data); temp=temp-next; printf(n); /* push data into the stack .*/void push(int value) link newnode; /* declare the new node point

10、er. */ newnode=(link)malloc(sizeof(s_list); newnode-data=value; /*新结点入栈*/_ _/* pop data from the stack. */int pop() link top; int temp; print_stack(); if(stack!=NULL) top=stack; stack=stack-next; temp=top-data; free(top); return temp; else return -1;/* the main program. */void main() int number,sub_

11、num,mid_num; int count=0; printf(please input the number of decimal:); scanf(%d,&number); while(number!=0) count+;/*除二取余,将余数赋给sub_num保存,并将sub_num入栈*/_ _ number=number/2; printf(thereis %d number in the stack!n,count); /* mid_num=pop();*/ /*printf(%dn,mid_num);*/ print_stack();四、运行输出结果:五、调试和运行程序过程中产生的问题及采取的措施:六、对算法的程序的讨论、分析,改进设想,其它经历教训:七、对实验方式、组织、设备、题目的意见和建议:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!