软件技术基础上机实验3(数据结构)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三数据结构上机实验

⏹实验目的:

掌握栈的运算。掌握队列中的进队和出队运算。

⏹实验内容:

1.顺序栈运算的实现

编写程序实现顺序栈的运算,包括以下函数:

a)初始化栈;

b)建立栈;

c)打印栈中的栈元素;

d)取栈顶元素;

e)进栈;

f)出栈。

在主函数中输出菜单,调用上述函数

(参考程序附后stack.c)

2.队列中的进队和出队运算

顺序存储一个循环队列,编写下列函数:

a)初始化队列;

b)进队;

c)出队;

d)打印队列中的元素。

在主函数中提供调用上列函数的菜单。

(参考程序附后queue.c)

3.试编写一程序,运用栈结构实现编译系统中中缀表达式到后缀表达式的变换,要求可处理带括号的表达式。 (注:此题选做。参考源码附后express.c)

⏹实验报告:

1.源代码(包括主要结构、主要语句、函数注释说明)

2.运行结果(包括程序如何使用,输入数据和输出结果)

3.实验体会和问题分析

4.报告请以电子文档形式,上传至教师社区/课程列表中的“软件技术基础”,文

件名以学号加姓名命名。

顺序栈运算的实现stack.c (程序需补充完整)

# define MAX 10

typedef struct

{

int stack[MAX];

int top;

} stacktype;

void initstack(stacktype *s)

{

程序需补充完整

}

int pushs(stacktype *s,int x)

{

程序需补充完整

}

int pops(stacktype *s)

{

程序需补充完整

}

int tops(stacktype *s)

{

if (s->top<0)

{

printf("\nThe stack is empty.");

return 0;

}

else

return(s->stack[s->top]);

}

void createstack(stacktype *s)

{

int i,n,x;

printf("\nplease input how many elements do you want to put into the stack n=");

scanf("%d",&n);

if (n>MAX) n=MAX;

for(i=1;i<=n;i++)

{

printf("\nplease input the No. %d element:",i);

scanf("%d",&x);

pushs(s,x);

}

}

int printstack(stacktype s)

{

int i;

if (s.top<0)

{

printf("\nThe stack is empty.");

return 0;

}

else

{

printf("\nContent of the stack is: ");

i=s.top;

while (i>=0)

{

printf("\n %d",s.stack[i]);

i--;

}

return 1;

}

}

void main()

{

int x,i,retvalue;

stacktype s;

i=1;

initstack(&s);

createstack(&s);

printf("\ncreatedstack is: ");

printstack(s);

while(i)

{

printf("\n");

printf("\n\t\t\t*******************************");

printf("\n\t\t\t* 1---Push *");

printf("\n\t\t\t* 2---Pop *");

printf("\n\t\t\t* 3---Get top *");

printf("\n\t\t\t* 0---exit *");

printf("\n\t\t\t*******************************");

printf("\n\t\t\tPlease select: 0-3...");

scanf("%d",&i);

switch(i)

{

case 1:

printf("\ninput element:");

scanf("%d",&x);

retvalue=pushs(&s,x);

if (retvalue==0)

printf("\nThe stack is full.");

else

{

printf("\nAfter Push");

printstack(s);

}

break;

case 2:

retvalue=pops(&s);

if (retvalue==0)

printf("\nThe stack is empty.");

else

{

printf("\nReturn value is: %d",retvalue);

printf("\nAfter Pop");

printstack(s);

}

break;

case 3:

retvalue=tops(&s);

printf("\nReturn value is: %d",retvalue);

printf("\nAfter top");

printstack(s);

break;

}

}

}

相关文档
最新文档