数据结构 栈 C语言实现_第1页
数据结构 栈 C语言实现_第2页
数据结构 栈 C语言实现_第3页
数据结构 栈 C语言实现_第4页
数据结构 栈 C语言实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学和信息技术大学20162017(下)年级系科专业2015级数据结构实验报告3学号:名字:王继初实验名称堆栈的应用完成时间2017.04.01一.实验目的1.了解堆栈的概念和数据结构的特性。2.把握两个顺序堆栈孔刘存储空间的概念。3.熟练掌握使用顺序堆栈实现堆栈的基本运算,特别注意堆栈满的车库空条件及其说明方法。4.提高编辑和调试c语言程序的能力。二、实验要求1.介面设计必须熟悉2.使用顺序堆栈完成。注意c类和c类的转换。机器试运行通过,仔细填写实验报告。三、实验原理堆叠是两个茄子的特殊线性表格。堆叠是只能在表格一端插入和删除的线性表格,也称为后进先出表格。堆栈是线性表的特殊情况,因此可以使

2、用顺序存储结构和链存储结构。堆栈的顺序存储结构称为顺序堆栈,堆栈的链存储结构称为链堆栈。顺序存储结构可以作为一维数组实现,链存储结构可以作为指针实现。四。实验内容使用顺序堆栈中的运算,将任意十进制整数转换为2到9之间的任意进制数并输出。实验过程:/*注:牙齿程序实施和应用堆栈操作*/#include#include#include#include#include#define STACK_INIT_SIZE 100#define STACKINCREMENT 10Typedef int SElemTypeTypedef int QElemType/*堆栈中的存储结构*/Typedef stru

3、ctSElemType * base/*堆栈低指针*/SElemType * top/*堆栈顶部指针*/Int stacksize/*当前分配给堆栈的所有空间,不是已用空间长度*/ SqStack/*开始* * * * * * * * * * * * * *队列中存储结构* * * * * * * * * * * * * * * * * * * * * * * *。Typedef struct QNodeQElemType dataStruct QNode * nextQNode,* QueuePtrTypedef structQueuePtr frontQueuePtr rear LinkQ

4、ueue/* * * * * * * * * * * * * * *队列中的存储结构* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。/*函数宣言*/selem type GetTop(sq stack * S);Void推送(SqStack *S,selem type e);bool SEmpty(sq stack * S);SElemType Pop(sq stack * S);void main();/匹配括号-Void match(SqStack *S)char str20;Int i

5、=0,flagfflush(stdin);printf( please enter a string : );scanf(“% s”,str);While(stri)!=0flag!=0)交换机(str I)盘柜(:推(s,();布列克;盘柜):If(*(S-top-1)=()flag=1;流行(s);else flag=0;布列克;盘柜:推(s,);布列克;Case :if(*(S-top-1)=)flag=1;流行(s);else flag=0;布列克;盘柜:推(s,);布列克;Case :if(*(S-top-1)=)flag=1;流行(s);else flag=0;布列克;defaul

6、t 3360 flag=0;布列克;I;if(flag=1)(SEmpty(S)=0)Printf(n success! n );Else printf(n error! n );/匹配括号-/反转QueueLinkQueue * InitQ()link queue * Q;q=(link queue *)malloc(size of(link queue);q-front=q-rear=(queue ptr)malloc(size of(qnode);If(!Q-front)退出(1);q-front-next=NULL;Printf(Successful Q!);return Q;Void

7、 enq(链接queue * q,qelemtype e)/入队queue ptr p;p=(queue ptr)malloc(size of(qnode);If(!p)退出(1);p-data=e;p-next=NULL;q-rear-next=p;q-rear=p;Int DeQ(LinkQueue *Q) /取消伫列int e;queue ptr p;if(Q-front=Q-rear)return 0;Elsep=Q-front-next;e=p-data;q-front-next=p-next;if(Q-rear=p)Q-rear=Q-front;自由(p);return e;Voi

8、d algo3(链接queue * q,sqstack * s)/反转int d;While(!(Q-front=Q-rear)d=DeQ(Q);推(s,d);While(SEmpty(S) EnQ(Q,Pop(S);Voidtes (linkqueue * q,sqstack * s)/逆周函数Int i、e、n;Printf(n要输入的数据栏数为);scanf(“% d”,n);Printf(n反向转换数据输入:);for(I=0);Ifront=Q-rear)Printf(=,DeQ(Q);printf(“ n”);free(Q);/反转Queue/回文-Void Huiwen(链接qu

9、eue * q,sqstack * s)char str20;Int i=0,flagfflush(stdin);printf( please enter a string : );scanf(“% s”,str);While(stri)!=0)推(s,strI);EnQ(Q,strI);I;While(SEmpty(S)flag)!=0)if(DeQ(Q)=Pop(S)flag=1;else flag=0;If(flag=1)Printf(n success! n );Else printf(n error! n );/回文-SqStack * InitStack() /*1。堆栈初始化*/

10、sq stack * S;s=(sq stack *)malloc(sizeof(sq stack);s-base=(selem type *)malloc(stack _ init _ size * sizeof(selem type);If(!S |!S-base)退出(1);S-top=S-base;s-stacksize=STACK _ INIT _ SIZE;return S;Bool SEmpty(SqStack *S) /*2。堆叠null */if(S-top=S-base)return 0;else return 1;/*1表示堆栈不为空。*/Voidpush (sqstac

11、k * s,s elemtype e)/* 3。堆栈*/If(S-top-S-base=S-stacksize)s-base=(selem type *)realloc(s-base,(s-stack size stack increment)* size of(s elem type)If(!S-base)退出(1);printf(“ n空间不足,打开新空间成功! n );S-top=S-base S-stacksize;s-stack size=stack increment;* S-top=e;SElemType Pop(SqStack *S) /*4。堆栈*/If(S-top=S-ba

12、se)return 0;printf( nthe sequence stack is empty!);else return *(-s-top);Void显示器(sqstack * s)/* 5。打印*/int e;SqStack * T;t=init stack();/*1 .新建堆栈T*/While(SEmpty(S)e=Pop(S);推(t,e);/*2 .堆叠T*/Printf(,e);/*堆栈不为空时按顺序打印*/While(SEmpty(T) Push(S,Pop(T);/*3 .将堆栈t的元素堆栈合并到堆栈s */free(T);printf(“ n”);Int StackLen

13、gth(SqStack *S) /*6。统计堆栈长度*/printf(“ n统计堆栈的长度为%dn”,(S-top-S-base);return(S-top-S-base);Voidsearch (sqstack * s,selemtype e)/* 7。查找*/Int count=0,flag=0;SqStack * T;t=init stack();While(SEmpty(S)If(e=GetTop(S)计数;flag=1;Printf(n%d元素发现:%dn ,count,e);推(t,pop(s);While(SEmpty(T) Push(S,Pop(T);free(T);if(flag=0)printf(“ n找不到元素:%dn”,e);Void modify (sqstack * s,s elemtype e)/* 8。修改*/Int e1,count=0,flag=0,a;SqStack * T;t=init stack();While

温馨提示

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

评论

0/150

提交评论