ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:17.63KB ,
资源ID:11983824      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11983824.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(堆栈和队列基本函数.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

堆栈和队列基本函数.docx

1、堆栈和队列基本函数一.顺序栈1.宏定义#include#include#define MAXSIZE *#define datatype *2.结构体typedef struct datatype dataMAXSIZE; int top;Seqstack;3.基本函数Seqstack *Init_Seqstack()/*置空栈函数(初始化)1.先决条件:无;2.函数作用:首先建立栈空间,然后初始化栈顶指针,返回栈s的地址*/ Seqstack *s; s=(Seqstack *)malloc(sizeof(Seqstack); s-top=-1; return s;int Empty_Seq

2、stack(Seqstack *s)/*判栈空函数1.先决条件:初始化顺序栈;2.函数作用:判断栈是否为空,空返回1,不空返回0*/ if(s-top=-1) return 1; else return 0;int Push_Seqstack(Seqstack *s,datatype x)/*入栈函数1.先决条件:初始化顺序栈2.函数作用:将数据x入栈,栈满则不能,成功返回1,因栈满失败返回0*/ if(s-top=MAXSIZE-1) return 0; s-top=s-top+1; s-datas-top=x; return 1;int Pop_Seqstack(Seqstack *s,d

3、atatype *x)/*出栈函数1.先决条件:初始化顺序栈2.函数作用:从栈中出一个数据,并将其存放到x中,成功返回1,因栈空失败返回0*/ if(s-top=-1) return 0; *x=s-datas-top; s-top-; return 1;int Top_Seqstack(Seqstack *s,datatype *x)/*取栈顶元素函数1.先决条件:初始化顺序栈2.函数作用:取栈顶元素,并把其存放到x中,成功返回1,因栈空失败返回0*/ if(s-top=-1) return 0; *x=s-datas-top; return 1;int Printf_Seqstack(Se

4、qstack *s)/*遍历顺序栈函数1.先决条件:初始化顺序栈2.函数作用:遍历顺序栈,成功返回1*/ int i,j=0; for(i=s-top;i=0;i-) printf(%d ,s-datai);/*因datatype不同而不同*/ j+; if(j%10=0) printf(n); printf(n); return 1;int Conversation_Seqstack(int N,int r)/*数制转换函数(顺序栈)1.先决条件:具有置空栈,入栈,出栈函数2.函数作用:将N转换为r进制的数*/ Seqstack *s; datatype x; printf(%d转为%d进制

5、的数为:,N,r);/*以后可以删除去*/ s=Init_Seqstack(); do Push_Seqstack(s,N%r); N=N/r; while(N); while(Pop_Seqstack(s,&x) if(x=10)/*为了能转为十进制以上的*/ printf(%c,x+55); else printf(%d,x); free(s);/*释放顺序栈*/ printf(n); return 1;4.主函数int main() Seqstack *s; int choice; datatype x; do printf(*n); printf(1.置空栈 2.判栈空 3.入栈 4.

6、出栈 5.取栈顶元素 6.遍历 7.退出n); printf(*n); printf(请输入选择(17):); scanf(%d,&choice); getchar(); switch(choice) case 1:s=Init_Seqstack(); if(s) printf(置空栈成功!n);break; case 2:if(Empty_Seqstack(s) printf(此为空栈.n); else printf(此不为空栈.n);break; case 3:printf(请输入一个整数:); scanf(%d,&x); if(Push_Seqstack(s,x) printf(入栈成功

7、.n); else printf(栈已满,无法入栈.n);break; case 4:if(Pop_Seqstack(s,&x) printf(出栈成功,出栈元素为:%dn,x); else printf(出栈失败,因栈为空.n);break; case 5:if(Top_Seqstack(s,&x) printf(取栈顶元素成功,栈顶元素为:%dn,x); else printf(取栈顶元素失败,因栈为空.n); break; case 6:Printf_Seqstack(s);break; case 7:printf(谢谢使用!n);break; default :printf(输入错误,

8、请重新输入!n);break; while(choice!=7); return 0;二.链栈1.宏定义#include#include#define datatype *2.结构体typedef struct snode datatype data; struct snode *next;Stacknode,*Linkstack;3.基本函数Linkstack Init_Linkstack()/*初始化栈函数1.先决条件:无2.函数作用:初始化链栈,返回top地址*/ Linkstack top; top=(Linkstack)malloc(sizeof(Stacknode); top-ne

9、xt=NULL; return top;int Empty_Linkstack(Linkstack top)/*判栈空函数1.先决条件:初始化链栈2.函数作用:判断栈是否为空,空返回1,不空返回0*/ if(top-next=NULL) return 1; else return 0;int Push_Linkstack(Linkstack top,datatype x)/*入栈函数1.先决条件:初始化链栈2.函数作用:将数据x入栈,成功返回1,失败返回0*/ Stacknode *p; p=(Stacknode *)malloc(sizeof(Stacknode); p-data=x; p-

10、next=top-next; top-next=p; return 1;int Pop_Linkstack(Linkstack top,datatype *x)/*出栈函数1.先决条件:初始化链栈2.函数作用:若栈空退出,若没空则将数据出栈,并将其存放到x中,成功返回1,因栈空失败返回0*/ if(top-next=NULL) return 0; Stacknode *p=top-next; *x=p-data; top-next=p-next; free(p); return 1;int Top_Linkstack(Linkstack top,datatype *x)/*取栈顶元素函数1.先

11、决条件:初始化链栈2.函数作用:取栈顶元素并放到x中,成功返回1,因栈空失败返回0*/ if(top-next=NULL) return 0; *x=top-next-data; return 1;int Printf_Linkstack(Linkstack top)/*遍历链栈函数1.先决条件:初始化链栈2.函数作用:遍历链栈,成功返回1*/ Stacknode *p=top-next; int j=0; while(p) printf(%d ,p-data);/*因datatype不同而不同*/ j+; if(j%10=0) printf(n); p=p-next; printf(n);

12、return 1;int Conversation_Linkstack(int N,int r)/*数制转换函数(链栈)1.先决条件:具有置空栈,入栈,出栈函数2.函数作用:将N转换为r进制的数*/ Linkstack top; datatype x; printf(%d转为%d进制的数为:,N,r);/*以后可以删除去*/ top=Init_Linkstack(); do Push_Linkstack(top,N%r); N=N/r; while(N); while(Pop_Linkstack(top,&x) if(x=10)/*为了能转为十进制以上的*/ printf(%c,x+55);

13、else printf(%d,x); printf(n); free(top);/*释放栈顶空间*/ return 1;4.主函数int main() Linkstack top; int choice; datatype x; do printf(*n); printf(1.置空栈 2.判栈空 3.入栈 4.出栈 5.取栈顶元素 6.遍历 7.退出n); printf(*n); printf(请输入选择(17):); scanf(%d,&choice); getchar(); switch(choice) case 1:top=Init_Linkstack(); if(top) printf

14、(置空栈成功!n);break; case 2:if(Empty_Linkstack(top) printf(此为空栈.n); else printf(此不为空栈.n);break; case 3:printf(请输入一个整数:); scanf(%d,&x); if(Push_Linkstack(top,x) printf(入栈成功.n); else printf(栈已满,无法入栈.n);break; case 4:if(Pop_Linkstack(top,&x) printf(出栈成功,出栈元素为:%dn,x); else printf(出栈失败,因栈为空.n);break; case 5:

15、if(Top_Linkstack(top,&x) printf(取栈顶元素成功,栈顶元素为:%dn,x); else printf(取栈顶元素失败,因栈为空.n); break; case 6:Printf_Linkstack(top);break; case 7:printf(谢谢使用!n);break; default :printf(输入错误,请重新输入!n);break; while(choice!=7); return 0;三.顺序队列1.宏定义#include#include#define MAXSIZE *#define datatype *2.结构体typedef struct

16、 datatype dataMAXSIZE; int rear,front; int num;Sequeue;3.基本函数Sequeue *Init_Sequeue()/*初始化顺序队列函数1.先决条件:无2.函数作用:初始化顺序队列,成功返回顺序队列首地址q*/ Sequeue *q; q=(Sequeue *)malloc(sizeof(Sequeue); q-front=q-rear=MAXSIZE-1; q-num=0; return q;int In_Sequeue(Sequeue *q,datatype x)/*入队函数1.先决条件:初始化顺序队列2.函数作用:将数据x入队到q中,

17、成功返回1,因队满失败返回0*/ if(q-num=MAXSIZE) printf(队满.n);/*可视情况删除此句*/ return 0; else q-rear=(q-rear+1)%MAXSIZE; q-dataq-rear=x; q-num+; return 1; int Front_Sequeue(Sequeue *q,datatype *x)/*取队头元素函数1.先决条件:初始化顺序表2.函数作用:取队头元素并将其存放到x中,成功返回1,因队空而失败返回0*/ if(q-num=0) printf(队空.n);/*可视情况删除此句*/ return 0; *x=q-dataq-fr

18、ont+1; return 1;int Out_Sequeue(Sequeue *q,datatype *x)/*出队函数1.先决条件:初始化顺序队列2.函数作用:将数据x入队到q中,成功返回1,因队空失败返回0*/ if(q-num=0) printf(队空.n);/*可视情况删除此句*/ return 0; else q-front=(q-front+1)%MAXSIZE; *x=q-dataq-front; q-num-; return 1; int Empty_Sequeue(Sequeue *q)/*判空函数1.先决条件:初始化顺序队列2.函数作用:是空返回1,非空返回0*/ if(

19、q-num=0) return 1; else return 0;int Printf_Sequeue(Sequeue *q)/*遍历函数1.先决条件:初始化顺序队列2.函数作用:遍历输出所有数据*/ int i,j=q-front+1,n=q-num; for(i=0;idataj);/*因datatype数据不同而不同*/ j+; j=j%MAXSIZE; printf(n); return 1;4.主函数int main() Sequeue *q; int choice; datatype x; do printf(*n); printf(1.初始化 2.判队空 3.入队 4.出队 5.

20、取队头元 6.遍历 7.退出n); printf(*n); printf(请输入选择(17):); scanf(%d,&choice); getchar(); switch(choice) case 1:q=Init_Sequeue(); if(q) printf(置空队成功!n);break; case 2:if(Empty_Sequeue(q) printf(此为空队.n); else printf(此不为空队.n);break; case 3:printf(请输入一个整数:); scanf(%d,&x); if(In_Sequeue(q,x) printf(入队成功.n); else p

21、rintf(队已满,无法入队.n);break; case 4:if(Out_Sequeue(q,&x) printf(出队成功,出队元素为:%dn,x); else printf(出队失败,因队为空.n);break; case 5:if(Front_Sequeue(q,&x) printf(取队头元素成功,队头元素为:%dn,x); else printf(取队头元素失败,因队为空.n); break; case 6:Printf_Sequeue(q);break; case 7:printf(谢谢使用!n);break; default :printf(输入错误,请重新输入!n);bre

22、ak; while(choice!=7); return 0;四.链队列1.宏定义#include#include#define datatype int2.结构体typedef struct node datatype data; struct node *next;Qnode;typedef struct Qnode *front,*rear;Lqueue;3.基本函数Lqueue *Init_Lqueue()/*初始化链队列函数1.先决条件:无2.函数作用:初始化链队列,成功返回顺序队列首地址q(头结点)*/ Lqueue *q; Qnode *p; q=(Lqueue *)malloc

23、(sizeof(Lqueue); p=(Qnode *)malloc(sizeof(Qnode); p-next=NULL; q-front=p; q-rear=p; return q;int In_Lqueue(Lqueue *q,datatype x)/*入队函数1.先决条件:初始化链队列2.函数作用:将数据x入队到q中,成功返回1*/ Qnode *p; p=(Qnode *)malloc(sizeof(Qnode); p-data=x; p-next=NULL; q-rear-next=p; q-rear=p; return 1;int Empty_Lqueue(Lqueue *q)/

24、*判空函数1.先决条件:初始化链队列2.函数作用:是空返回1,非空返回0*/ if(q-front=q-rear) return 1; else return 0;int Front_Lqueue(Lqueue *q,datatype *x)/*取队头元素函数1.先决条件:初始化链队列2.函数作用:取队头元素并将其存放到x中,成功返回1,因队空而失败返回0*/ if(Empty_Lqueue(q) printf(队空.n);/*可视情况删除此句*/ return 0; *x=q-front-next-data; return 1;int Out_Lqueue(Lqueue *q,datatyp

25、e *x)/*出队函数1.先决条件:初始化链队列2.函数作用:将数据x入队到q中,成功返回1,因队空失败返回0*/ Qnode *p; if(Empty_Lqueue(q) printf(队空.n);/*可视情况删除此句*/ return 0; p=q-front-next; *x=p-data; q-front-next=p-next; free(p); if(q-front-next=NULL) q-rear=q-front; return 1;int Printf_Lqueue(Lqueue *q)/*遍历函数1.先决条件:初始化链队列2.函数作用:遍历输出所有数据*/ Qnode *p; for(p=q-front-next;p!=NULL;p=p-next) printf(%d ,p-data);/*因datatype数据不同而不同*/ printf(n); return 1;4.主函数int main() Lqueue *q; int choice; datatype x; do printf(*n); printf(1.初始化 2.判队空 3.入队 4.出队 5.取队头元 6.遍

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1