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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(3,4数据结构作业..doc)为本站会员(彼岸花开)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

3,4数据结构作业..doc

1、第三章3.5 假设以 S 和 X 分别表示入栈和出栈的操作,则初态和终态均为空栈的入栈和出栈的操作序列可以表示为仅由 S 和 X 组成的序列。称可以操作的序列为合法序列(例如,SXSX 为合法序列,SXXS 为非法序列) 。试给出区分给定序列为合法序列或非法序列的一般准则,并证明:两个不同的合法(栈操作)序列(对同一输入序列)不可能得到相同的输出元素(注意:在此指的是元素实体,而不是值)序列。解:一般准则:任何前 n 个序列中 S 的个数一定大于或等于 X 的个数且整个序列中 S 的个数一定等于 X 的个数。证明:设两个合法序列为:T1=SXST2=SXX假定前 n 个操作都相同,从第 n+1

2、 个操作开始,为序列不同的起始操作点。由于前 n个操作相同,故此时两个栈(不妨为栈 A、B)的存储情况完全相同,假设此时栈顶元素均为 a。第 n+1 个操作不同,不妨 T1 的第 n+1 个操作为 S,T2 的第 n+1 个操作为 X。T1 为入栈操作,假设将 b 压栈,则 T1 的输出顺序一定是先 b 后 a;而 T2 将 a 退栈,则其输出顺序一定是先 a 后 b。由于 T1 的输出为ba,而 T2 的输出顺序为ab,说明两个不同的合法栈操作序列的输出元素的序列一定不同。3.9 试将下列递推过程改写为递归过程。void ditui(int n)int i;i = n;while(i1)co

3、utx;if(x=0) sum=0;elsetest(sum);sum+=x;cout#include#define STACK_INIT_SIZE 100#define TURE 1#define FALSE 0#define ok 1#define error 0#define INFEASIBLE -1typedef int selemtype ;typedef int status;typedef structint * base2;selemtype * top2;int stacksize;sqstack;status INITstack(sqstack * s)int * p;p

4、=(selemtype *) malloc (STACK_INIT_SIZE * sizeof(selemtype);(*s).base0=(*s).top0=p;(*s).base1=(*s).top1=p+STACK_INIT_SIZE-1;if(!(*s).base0) exit(-2);if(!(*s).base1) exit(-2);return ok;status Push(sqstack * s,int i,selemtype e)if(i=0)if (*s).top0=(*s).base0+(STACK_INIT_SIZE/2)-1) return error;else *(*

5、s).top0+=e;return ok;if(i=1)if(*s).top1#include#define SIZE 100typedef char selemtype ;typedef structselemtype * base;selemtype * top;int size; stack;int Prior(char c1,char c2)char ch5=“#+-*/“;int i=0,j=0;if(c1=() return 0;while(chi if(i=2) i-; / 加和减可认为是同级别的运算符if(i=4) i-; / 乘和除可认为是同级别的运算符while(chj i

6、f(j=2) j-;if(j=4) j-;if(ij) return 1;else return 0;void main()stack sta;char ch=0,ct;sta.base=(selemtype *)malloc(SIZE*sizeof(selemtype);if(!sta.base ) exit(0);sta.top=sta.base;sta.size=0;*sta.top+=#;printf(“please enter the expression:n“);while(ch!=#if(a#include#define max_size_stack 100#define inc

7、re 10#define ok 1#define error -100typedef int elemtype2;typedef int status;typedef structelemtype2 * top;elemtype2 * base;int size;stack2;status initstack2(stack2 if(!da.base) cout=da.size) da.base=(elemtype2 *)realloc(da.base,(da.size+incre)*sizeof(elemtype2);if(!da.base) coutcch;if(cch!=+else if(

8、cch!=#)pop2(da,e2);pop2(da,e1);if(coun(e1,e2,cch)=-100) cout#include #define maxqsize 5#define ok 1#define error 0typedef int qelemtype;typedef int status;typedef structqelemtype * base;int front;int rear;int tag;squeue;status initqueue(squeue if(!sq.base) exit(-2);sq.front=sq.rear=0;sq.tag=0;return

9、 ok;status enqueue(squeue sq.basesq.rear=e;sq.rear=(sq.rear+1)%maxqsize;if(sq.rear=sq.front) sq.tag=1;return ok;status dequeue(squeue e=sq.basesq.front;sq.front=(sq.front+1)%maxqsize;if(sq.tag=1) sq.tag=0;return ok;void main()squeue sq;qelemtype e;int i;initqueue(sq);coute;if(enqueue(sq,e) coute;if(

10、enqueue(sq,e) coute;if(enqueue(sq,e) cout#include#define max 3#define ok 1#define error 0typedef int status;typedef int selemtype;typedef structselemtype * base;int rear;int length;squeue;status initqueue(squeue if(!sq.base) exit(-2);sq.rear=0;sq.length=0;return ok;status enqueue(squeue sq.basesq.re

11、ar=e;sq.rear=(sq.rear+1)%max;sq.length+;return ok;status dequeue(squeue if(enqueue(sq,e) coute;if(enqueue(sq,e) coute;if(enqueue(sq,e) coute;if(enqueue(sq,e) cout#include#define max 10typedef char elemtype;typedef structelemtype * base;int front;int rear;squeue;void main()squeue sq;char e1=0,e2=0,ch

12、;int i,n;sq.base=(elemtype *)malloc(max*sizeof(elemtype);sq.front=sq.rear=0;coutch;sq.basesq.rear=ch;sq.rear=(sq.rear+1)%max;if(sq.basesq.rear-1=) sq.rear-;if(sq.rear+1)%max=sq.front)cout=n/2typedef int elemtype;typedef structelemtype * base;int front ;int rear ;int tag;xqueue;status initqueue(xqueu

13、e if(!sq.base) exit(-2);sq.front=sq.rear=0;sq.tag=0;return ok;status enqueue(xqueue if(sq.front=sq.rearif(sq.front=sq.rearsq.rear=(sq.rear+1)%max;if(sq.front=sq.rear) sq.tag=1;elsea=(sq.basesq.front+sq.base(sq.rear+max-1)%max)/2;if(e=a)sq.basesq.rear=e;sq.rear=(sq.rear+1)%max;if(sq.front=sq.rear) sq

14、.tag=1;elsesq.base(sq.front+max-1)%max=e;sq.front=(sq.front+max-1)%max;if(sq.front=sq.rear) sq.tag=1;return ok;status dequeue(xqueue elsee=sq.basesq.front;sq.front=(sq.front+1+max)%max;sq.tag=0;return ok;void main()xqueue sq;elemtype e;initqueue(sq);coute;if(enqueue(sq,e) coute;if(enqueue(sq,e) cout

15、e;if(enqueue(sq,e) coute;if(enqueue(sq,e) cout#include#define max 10#define ok 1#define error 0typedef int status;typedef char elemtype;typedef structelemtype * base;int front ;int rear ;int tag;xqueue;status initqueue(xqueue if(!sq.base) exit(-2);sq.front=sq.rear=0;sq.tag=0;return ok;status enqueue

16、rear(xqueue sq.basesq.rear=e;sq.rear=(sq.rear+1)%max;if(sq.front=sq.rear) sq.tag=1;return ok;status enqueuetop(xqueue sq.base(sq.front-1+max)%max=e;sq.front=(sq.front-1+max)%max;if(sq.front=sq.rear) sq.tag=1;return ok;status dequeue(xqueue elsee=sq.basesq.front;sq.front=(sq.front+1+max)%max;sq.tag=0

17、;return ok;status empty(xqueue sq)if(sq.front=sq.rearelse return error;status gettop(xqueue sq,elemtype e=sq.basesq.front;return ok;void main()xqueue sq;elemtype e;char ch25,cch;int i,n;initqueue(sq);coutn;coutcch;chi-1=cch;for(i=1;i#include#include#define ok 1typedef int status;typedef structchar *

18、 ch;int * pos;int length;string;status strassign(string char * c,* cc;if(r.ch) free(r.ch);i=0;c=chars;while(*c)if(*c!=*)i+;c+;c+;if(!i)r.ch=0;r.pos=0;elseif(!(r.ch=(char *)malloc(i*sizeof(char)exit(-2);if(!(r.pos=(int *)malloc(i*sizeof(int)exit(-2);j=k=i=1;c=chars;cc=r.ch;while(cj-1)if(cj-1!=*)cci-1

19、=cj-1;r.posk-1=j-1;i+;k+;r.length+;j+;return ok;void main()int i,j,m,n;string r=0,0,0;char s20,t20;couts;coutt;for(n=0;sn;n+);for(m=0;tm;m+);for(i=1;i#include#include#define ok 1typedef int status;typedef structchar * ch;int length;string;status strassign(string char * c,* cc;free(r.ch);i=0;c=chars;

20、while(*c)if(*c!=*)i+;c+;c+;if(!i)r.ch=0;r.length=0;elseif(!(r.ch=(char *)malloc(i*sizeof(char)exit(-2);j=i=1;c=chars;cc=r.ch;r.length=0;while(cj-1)if(cj-1!=*)cci-1=cj-1;i+;r.length+;j+;return ok;int index(string s,string t ,int pos )int i=pos;int j=0;while(it.length-1) return i-t.length;else return

21、s.length+1;void main()int i,j,pos;string s=0,0,t=0,0;char ss20,tt20;coutss;couttt;strassign(s,ss);strassign(t,tt);pos=0;i=index(s,t,pos);while(i=s.length)for(j=1;j=t.length;j+)s.chi+j-1=*;pos=i=t.length;i=index(s,t,pos);for(i=1;i=s.length;i+)ssi-1=s.chi-1;strassign(s,ss);cout“新串 s 为:“endl;for(i=0;i=s.length-1;i+) couts.chi“ “;coutendl;运行结果:4.14 利用串的基本操作以及栈和集合的基本操作,编写“由一个算术表达式的前缀式求后缀式”的递推算法(假设前缀式不含语法错误) 。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报