数据结构习题(1,2,3章)答案 下载本文

精品

2.bceda 3.3

三.解答题

1.

#define M 20 struct DStack{ Selemtype data[M]; int top1,top2; };

void InitStack(DStack &s) { s.top1=0; s.top2=M-1; }

int IsEmpty(DStack s,int i) { switch(i) { case 0:return s.top1==0; case 1:return s.top2==M-1; } }

int IsFull(DStack s) { return s.top1>s.top2; }

void Push(DStack &s ,int i,Selemtype x) { if (IsFull(s)) { cout<<\ return; } switch(i) { case 0: s.data[s.top1]=x; s.top1++; break; case 1: s.data[s.top2]=x; s.top2--; break;

精品

} return; }

Selemtype Pop(DStack &s,int i) { Selemtype e; if(IsEmpty(s,i)) { cout<<\ exit(-1); } switch(i) { case 0: s.top1--; e=s.data[s.top1]; break; case 1: s.top2++; e=s.data[s.top2]; } return e; } 2.

#define M 3 struct Stack{ Qelemtype data[M]; int top; };

struct Queue{ Stack s1; Stack s2; };

void InitQueue(Queue &Q) { Q.s1.top=0; Q.s2.top=0; }

int IsEmpty(Queue &Q) { if(Q.s1.top==0&&Q.s2.top==0) return 1; if(Q.s2.top==0&&Q.s1.top!=0) {

精品

while(Q.s1.top!=0) Q.s2.data[Q.s2.top++]=Q.s1.data[--Q.s1.top]; } return 0; }

int IsFull(Queue &Q) { if(Q.s1.top==M&&Q.s2.top!=0) return 1; if(Q.s1.top==M&&Q.s2.top==0) { while(Q.s1.top!=0) Q.s2.data[Q.s2.top++]=Q.s1.data[--Q.s1.top]; return 0; } if(Q.s1.top!=M) return 0; }

void InQueue(Queue &Q,Qelemtype e) { if(IsFull(Q)) { cout<<\ exit(-1); } Q.s1.data[Q.s1.top++]=e; }

void DeQueue(Queue &Q,Qelemtype &e) { if(IsEmpty(Q)) { cout<<\ exit(-1); } e=Q.s2.data[--Q.s2.top]; } 3.

功能:借助栈将队列Q中的元素逆置 队列Q的值:Q={8,4,25,34,12 } 精品

下面是古文鉴赏,不需要的朋友可以下载后编辑删除!!谢谢!! 九歌·湘君 屈原 朗诵:路英 君不行兮夷犹,蹇谁留兮中洲。 美要眇兮宜修,沛吾乘兮桂舟。 令沅湘兮无波,使江水兮安流。 望夫君兮未来,吹参差兮谁思。