您的当前位置:首页正文

实验六 顺序栈

2023-04-20 来源:步旅网


实验六 顺序栈

1. 创建一个包含数字元素的顺序栈,同时具有如下功能:

【1】初始化一个顺序栈

【2】输出顺序栈中各结点的值

【3】在顺序栈中插入值为x的新元素

【4】在顺序栈中出栈操作并打印被删除的元素

【5】给出当前的栈顶元素

提示:

第一步:定义该顺序栈的存储结构(元素都是整型数字)

第二步:定义5种操作的函数

第三步:编写main函数。使用switch函数,根据用户的输入,实现顺序栈相应的基本操作。

2. 选做实验:把第1题中的数字元素改为学生信息表中的信息(学号,姓名,成绩),同时具有上面的5种功能。

#include

#include

#define m 100

typedef struct

{

int stack[m];

int top;

}stackstru;

stackstru *init() /*装入栈*/

{

stackstru *s;

s =(stackstru*)malloc(sizeof(stackstru));

s->top=0;

return s;

}

int push(stackstru *s,int x) /*入栈操作*/

{

if (s->top==m)

printf(\"the stack is overflow!\\n\");

else

{

s->top=s->top+1;

s->stack[s->top]=x;

}

}

void display(stackstru *s) /*显示栈所有数据*/

{

if(s->top==0)

printf(\"the stack is empty!\\n\");

else

{

while(s->top!=0)

{

printf(\"%d->\

s->top=s->top-1;

}

}

}

int pop(stackstru *s) /*出栈操作并返回被删除的那个记录*/

{

int y;

if(s->top==0)

printf(\"the stack is empty!\\n\");

else

{

y=s->stack[s->top];

s->top=s->top-1;

return y;

}

}

int gettop(stackstru *s) /*得到栈顶数*/

{

int e;

if(s->top==0)

return 0;

else

e=s->stack[s->top];

return e;

}

main(stackstru *p)

{

int n,i,k,h,x1,x2,select;

printf(\"create a empty stack!\\n\");

p = init();

printf(\"input a stack length:\\n\");

scanf(\"%d\

for(i=0;i{

printf(\"input a stack value:\\n\");

scanf(\"%d\

push(p,k);

}

printf(\"select 1:display()\\n\");

printf(\"select 2:push()\\n\");

printf(\"select 3:pop()\\n\");

printf(\"select 4:gettop()\\n\");

printf(\"input a your select(1-4):\\n\");

scanf(\"%d\

switch(select)

{

case 1:

{

display(p);

break;

}

case 2:

{

printf(\"input a push a value:\\n\");

scanf(\"%d\

push(p,h);

display(p);

break;

}

case 3:

{

x1=pop(p);

printf(\"x1->%d\\n\

display(p);

break;

}

case 4:

{

x1=gettop(p);

printf(\"x1->%d\

break;

}

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容