题目:
(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--;
}
}