习题三和上机答案Word格式.doc

上传人:b****2 文档编号:14176115 上传时间:2022-10-19 格式:DOC 页数:13 大小:83KB
下载 相关 举报
习题三和上机答案Word格式.doc_第1页
第1页 / 共13页
习题三和上机答案Word格式.doc_第2页
第2页 / 共13页
习题三和上机答案Word格式.doc_第3页
第3页 / 共13页
习题三和上机答案Word格式.doc_第4页
第4页 / 共13页
习题三和上机答案Word格式.doc_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

习题三和上机答案Word格式.doc

《习题三和上机答案Word格式.doc》由会员分享,可在线阅读,更多相关《习题三和上机答案Word格式.doc(13页珍藏版)》请在冰豆网上搜索。

习题三和上机答案Word格式.doc

#include"

stdio.h"

 #defineDataTypechar

 #definesqstack_maxsize40

 typedefstructsqstack

 {DataTypedata[sqstack_maxsize];

  inttop;

 }SqStackTp;

 intInitStack(SqStackTp*sq)

 {sq->

top=0;

return

(1);

}

 intPush(SqStackTp*sq,DataTypex)

 {

  if(sq->

top==sqstack_maxsize-1)

  {printf("

栈满"

);

return(0);

  else

  {sq->

top++;

sq->

data[sq->

top]=x;

 }

 intPop(SqStackTp*sq,DataType*x)

  if(sq->

top==0){printf("

下溢"

  else{*x=sq->

top];

top--;

 intEmptyStack(SqStackTp*sq)

top==0)return

(1);

  elsereturn(0);

 /*主函数*/

 voidmain()

 {SqStackTpsq;

  DataTypech;

  InitStack(&

sq);

  for(ch='

A'

;

ch<

='

+12;

ch++)

  {Push(&

sq,ch);

printf("

%c"

ch);

  printf("

\n"

  while(!

EmptyStack(&

sq))

  {Pop(&

sq,&

ch);

printf("

链表:

 #definedatatypechar

 #definesizesizeof(structnode)

 typedefstructnode

 {datatypedata;

  structnode*next;

 }*LStackTp;

 voidInitStack(LStackTp*ls)

  *ls=NULL;

 voidPush(LStackTp*ls,datatypex)

 {LStackTpp;

  p=(LStackTp)malloc(size);

  p->

data=x;

next=*ls;

  *ls=p;

 intPop(LStackTp*ls,datatype*x)

  if((*ls)!

=NULL)

  {p=*ls;

*x=p->

data;

*ls=(*ls)->

next;

   free(p);

return

(1);

  }elsereturn(0);

 intEmptyStack(LStackTpls) 

  if(ls==NULL)return

(1);

 {LStackTpls;

  datatypech;

  InitStack(ls);

ls,ch);

ls->

data);

EmptyStack(ls))

ls,&

}

⒊3有两个栈A,B这两个栈中分别存储这一个升序数列,现要求编写算法把这两个栈中的数合成一个升序队列

linkmerge(linka,linkb)

{linkh,s,m,n,t;

h=(cnode*)malloc(sizeof(cnode));

h->

next=NULL;

s=h;

m=a;

n=b;

while(m->

next&

&

n->

next)

{if(m->

next->

data<

data)

{t=m->

m->

next=t->

t->

next=s->

s->

next=t;

s=t;

}

elseif(m->

data==n->

{t=m->

m->

n=n->

t->

s->

s=t;

}

else

{t=n->

n->

}

{t=m->

m->

t->

s->

s=t;

while(n->

{t=n->

n->

t->

s->

s=t;

free(m);

free(n);

returnh;

⒊4设两个栈共享一个数组空间,其类型定义见⒊⒈2节,试写出两个栈公用的读栈顶元算法elemtptop_dustack(dustacktpds,p;

inti);

进栈操作算法voidpush_dustack(dustacktpds,p;

inti,elemtpx);

及出栈算法elemtppop_dustack(dustacktpds,p;

inti)。

其中i的取值是1或2,用以指示栈号。

读栈顶元函数

elemtptop_sqstack(s:

sqstacktp){

if(s.top==0)

return(null);

else

return(s.elem[s.top]);

}

进栈操作

voidpush_sqstack(sqstacktps,elemtpx){

若栈s未满,将元素x压入栈中;

否则,栈的状态不变并给出出错信息

if(s.top==maxsize)

printf(“Overflow”);

else{

s.top++;

栈顶指针加1

s.elem[s.top]=xx进栈

}

出栈函数

elemtppop_sqstack(sqstacktps){

若栈s不空,则删去栈顶元素并返回元素值,否则返回空元素NULL

if(s.top==0)

return(null);

s.top--;

栈顶指针减1

teturn(s.elem[s.top+1]);

返回原栈顶元素值

}

⒊5假设以数组sequ(0..m-1)存放循环队列元素,同时设变量rear和quelen分别指示循环队列中队尾元素和内含元素的个数。

试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队列的算法中要返回队头元素)。

队满的条件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

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

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