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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构 顺序栈 链栈 循环队列 链队列 hrbedu文档格式.docx

1、对于每一个节点都有data和next域来存储数据和指向下一个节点,所以进行这种节点定义。typedef struct QNode int data;QNode *next;QNode,*QPtr;typedef struct Qlink QPtr front; QPtr rear;Qlink;3.算法设计系统规定的功能设计的算法有:置空栈、判栈空、进栈、出栈、读栈顶、输出栈、判栈满1)初始化和建立顺序栈S1:定义数据结构类型 char *base; char *top; int stacksize; Sq/定义结构体,其中包含栈顶、栈尾指针和存储空间S2:初始化这个顺序栈int InitSq(

2、Sq&S) S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(Sq); if(!S.base)exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; /申请存储空间,并且将栈顶栈尾元素指在一个位置,构造空栈S3:从键盘输入一串字符,根据这些字符构造顺序栈Sq create(Sq & InitSq(S); printf(请输入你的栈); char str100; gets(str);/得到字符 int n=strlen(str); for(int i=0;i=S.stack

3、size) S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char);S.base) exit (OVERFLOW); S.top=S.base+S.stacksize;/调整指针 S.stacksize+=STACKINCREMENT;/增大空间 *S.top+=e; 5)出栈编写子函数GetTop,使其可以得到栈顶元素,从而确定要删去的元素是什么,并且返回这个元素int GetTop(Sq S,char &e) if(S.top=S.base) return ERROR; e=*(S.top-1); ret

4、urn e;编写子函数Pop,删除栈顶元素int Pop(Sq& if(S.top=S.base)return ERROR; e=*-S.top;编写子函数Print,让这个函数可以输出栈里每一个元素来输出出栈后的栈里元素int Print(Sq S) char *p,*q; p=S.top; q=S.base; if(p=q) return ERROR; while(p!=q) printf(%cn,*(p-1); p-;6)读栈顶调用函数GetTop,读到栈顶元素,并且输出这个元素GetTop(S,a);,a)7)输出栈调用函数Print,输出栈里每一个元素8)判栈满编写函数T,使其可以实

5、现判栈满功能int T(Sq S) =S.stacksize) else return ERROR;根据返回值,确定输出内容if(T(S)printf(YnNn9)选择功能弹出提示,得到键盘处根据提示所输入的字符选择你想要的功能n1置空栈n2判断栈空n3进栈n4出栈n5读栈顶n6输出栈n7判栈满n%dm);用switch分析得到的m,根据不同的m进入不同的case,调用不同的函数switch(m) case 1:Clear(S);break; case 2:if(Empty(S) printf( else printf( break; case 3: Push(S,x);Print(S); c

6、ase 4:Pop(S,a); case 5:,a); case 6: case 7: 置空栈、判栈空、进栈、出栈、读栈顶1)定义节点,初始化链栈,创建链栈定义节点 struct node *next;/节点的定义S2:初始化链栈int Init(node* &h) h-next=NULL;/建立一个空栈编写子函数Set,使其根据键盘端的输入,创建链栈int Set(node* & int i; char str100; gets(str);/得到字符串 int n=strlen(str); for(i=0;i+)Push(h,stri);/将每一个字符入栈2)置空栈int Clear(nod

7、e* &在主函数里调用Clear子函数,就能达到置空栈的功能int Empty(node* & if(h-next=NULL) else return FALSE;if(Empty(h) printf( int Push(node* &h,char x) node *s; s=(node*)malloc(sizeof(node); s-data=x;next=h; h=s;int Pop(node* & char x; x=h-data; node *p; p=(node*)malloc(sizeof(node); p=h; h=h-next; free(p);编写子函数Gethead,使其可

8、以得到栈顶元素,从而得到新的栈顶元素来确认成功int Gethead(node* &h,char a)next=NULL)return FALSE ; a=h-head:调用Gethead函数即可完成功能7)选择需要的功能 scanf( getchar(); switch(m) case 1:Clear(h); case 2: else printf( case 3: scanf( Push(h,x); case 4:Pop(h);Gethead(h,a); case 5: 置空队、判队空、进队、出队、读队头元素、输出1)初始化和建立队列定义结构体 int front; int rear;初始

9、化队列int Init(SqQueue &Q) Q.base=(int *)malloc(MAXQSIZE*sizeof(int); if(!Q.base)return (OVERFLOW); Q.front=Q.rear=0;建立循环队列int Set(SqQueue & Init(Q);请输入队列:ni+)En(Q,stri);2)置空队编写子函数Clear,使其可以实现置空队功能int Clear(SqQueue & if(Q.rear=Q.front)return OK; Q.rear=Q.front;在主函数里调用Clear子函数,就能达到置空队的功能3)判队空编写判断栈空的子函数E

10、mpty,使其实现判队空功能int Empty(SqQueue &在主函数调用时根据队中指针位置判断输出内容if(Q.front=Q.rear)printf(empty else printf(notempty 4)进队从客户端得到所要入队的元素进队元素是:编写子函数En,使其可以实现将元素入栈功能 int En(SqQueue &Q,char e) if(Q.rear+1)%MAXQSIZE=Q.front)return ERROR; Q.baseQ.rear=e; Q.rear=(Q.rear+1)%MAXQSIZE;5)出队编写子函数De,删除队头元素编写子函数Gethead,使其可以得

11、到队头元素,从而得到新的队头元素来确认成功6)读队头元素调用Gethead函数即可实现7)输出队中元素编写子函数Print,使其可以输出队中每一个元素int Print(SqQueue Q) if(Q.rear=Q.front)return ERROR; int a,b; a=Q.front; b=Q.rear; while(a!=b) (printf(,Q.basea); a=(a+1)%MAXQSIZE;8)选择需要的功能选择你需要的功能n1置空队n2判队空n3进队n4出队n5读队头元素n6输出循环队列n while(1)printf( switch(m) case 1:Clear(Q);

12、 else printf( break;你要入队的元素n getchar(); En(Q,x); if(!Empty(Q)De(Q,e); Gethead(Q,a); printf(新队列头元素: else printf(队列已空 break;Gethead(Q,a); case 6:Print(Q);置空队、判队空、进队、出队、读队头元素typedef struct QNode QNode *next; QPtr front; QPtr rear;/定义单链队列的链式存储结构初始化int Initqueue(Qlink & Q.front=Q.rear=(QPtr)malloc(sizeof

13、(QNode);Q.front)exit(OVERFLOW); Q.front-/构造空队列 建立队列 Qlink Setqueue(Qlink & int i; Initqueue(Q); QPtr p;请输入你的队列i+) p=(QPtr)malloc(sizeof(QNode); p-data=stri; Q.rear-next=p; Q.rear=p; return Q;int Clear(Qlink & Q.front=Q.rear; int Empty(Qlink & if(Q.front=Q.rear) return TRUE; return FALSE;入队元素是:int En(Qlink & p=(QPtr)malloc(sizeof(QNode);p)exit(OVERFLOW);data=e;int De(Qlink &Q,char &e) if(Q.front=Q.rear)return FALSE; p=Q.front-next=p- e=p-int Gethead(Qlink Q,char &n) n=Q.front-next-调用函数Gethead就可以达到功能7)功能选择1置空队n2判队空n3进队n4出队n5读队头元素n

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

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