视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
实验三 实现顺序栈的插入和删除算法
2025-09-24 13:51:11 责编:小OO
文档
实验三  顺序栈的插入和删除算法

一.实验目的:

掌握栈在顺序存储结构上的插入和删除运算。

二. 实验要求:

1. 给出程序设计的基本思想、原理和算法描述。

2. 画出程序流程图;根据数据结构有关知识编出算法程序; 

3. 源程序给出注释。

4. 保存和打印出程序的运行结果,并结合程序进行分析。

三.实验内容:

1.编写函数实现顺序栈中的插入(入栈);

2.编写函数实现顺序栈中的删除(出栈);

3.编写程序实现以下功能:

(1) 创建一个顺序栈:22,33,45,99,8;

(2) 调用插入函数,令元素58入栈;

(3) 调用删除函数,删除栈顶的三个元素;

(4) 输出最终顺序栈中的元素。

算法分析:

  进栈,判断栈是否已满,若栈满,则进行溢出处理,若栈未满,将栈顶指针加一,将新元素送入到栈顶指针所指的位置。

  出栈,判断栈是否为空,若栈空,进行下溢处理,若栈不空,将栈顶元素赋给变量,将栈顶指针退一。

流程图:

    

    N

    Y

    Y

源程序:

#include

#include

#define MAXSIZE 50/*定义数组长度*/

int stack[MAXSIZE];/*栈元素的数据类型*/

int top;

void push(int x)

{if(top==MAXSIZE-1)

{printf("栈满溢出\\n");

exit(1);

}

else{top++;

stack[top]=x;

}

}

int pop()

{int x;

if(top==-1)

{printf("栈空溢出\\n");

exit(1);

}

else

{x=stack[top];

top--;

}

return x;

}

main()

{ int i;top=0;

printf("请输入顺序栈\\n");

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

{scanf("%d",&stack[i]);

top++;

}

push(58);

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

printf("%3d",stack[i]);/*输出删除后的数组*/

printf("\\n");

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

pop();

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

printf("%3d",stack[i]);

printf("\\n");

}

实验小结:通过本次实验让我对栈的算法有了进一步了解,让我受益良多。下载本文

显示全文
专题