数据结构:栈的链式存储结构实现

题目:

(1)用随机函数生成10个3位整数(100~999),把这些整数应用入栈操作存于堆栈中,在入栈接口处设置断点①,按“F5”启动调试,按“F10”逐句执行,直到数据全部入栈。程序暂停时观察栈顶数据和栈顶位置;
(2)应用出栈操作输出堆栈的内容,在出栈接口处设置断点②,按“F5”启动调试,按“F10”逐句执行,直到所有数据完全出栈,程序暂停时观察栈顶数据和栈顶位置的变化;

思路:

利用链表前插法模拟入栈,接着通过删除首节点实现出栈

代码:

#include "pch.h"
#include <iostream>
#include<ctime>
using namespace std;
struct linkstack//栈
{
	int data;
	linkstack *next;
};
void push(linkstack *&stack, int data)//前插法入栈
{
	linkstack *p = new linkstack;
	p->data = data;
	p->next = stack;
	stack = p;
}
int pop(linkstack *&stack)//出栈
{
	linkstack *p = stack;
	stack = stack->next;
	int data = p->data;
	delete p;
	return data;
}
int main()
{
	srand(unsigned int(time(0)));//随机数
	int cnt = 1;
	int pu;
	int po;
	linkstack *stack;
	cout << "入栈数据:"<<endl;
	while (cnt<=10)
	{
		pu = rand() % 900 + 100;
		cout << pu << '\t';
		push(stack, pu);
		cnt++;
	}
	cout << endl<<"出栈数据:\n";
	while (cnt>1)
	{
		po=pop(stack);
		cout << po << '\t';
		cnt--;
	}
}

数据结果:

在这里插入图片描述

发布了330 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43981315/article/details/103899716