📄 linearstack1.txt
字号:
//顺序堆栈的类定义linearStack1.h
const int LEN=40;
class Stack
{private:
ElemType stack[LEN];
int top;
public:
//构造函数
Stack(){top=0;}
//析构函数
~Stack(){}
//创建有序或无序栈
void CreateStack(int m=LEN,int mark=0);
//清空栈
void ClearStack();
//检查栈是否为空
bool StackEmpty();
//读取栈顶元素
ElemType Peek();
//向栈中插入元素
void Push(const ElemType&,int m=LEN);
//从栈中删除元素
ElemType Pop();
//检查栈是否已满
bool StackFull(int m=LEN);
//栈的输出
void StackPrint(int m=LEN);
};
//顺序堆栈的实现linearStack1.cpp
#include "linearStack1.h"
//创建有序或无序栈
void Stack::CreateStack(int m,int mark)
{ElemType x,a[LEN];
for(int i=0;i<m;i++) a[i]=random(213+i)%100;
for(int i=0;i<m-1;i++)
{int k=i;
for(int j=i+1;j<m;j++)
if(a[k]>a[j]) k=j;
if(k!=i)
{x=a[k];a[k]=a[i];a[i]=x;}}
for(int i=0;i<m;i++)
if(mark==1) Push(a[m-1-i]);//升序
else
if(mark==-1) Push(a[i]);//降序
else Push(rand()%100);//无序
}
//清空栈
void Stack::ClearStack() {top=0;}
//检查栈是否为空
bool Stack::StackEmpty() {return top==0;}
//读取栈顶元素
ElemType Stack::Peek()
{if(top==0) {cerr<<"栈为空!"<<endl;
exit(1);}
return stack[top];
}
//向栈中插入元素
void Stack::Push(const ElemType& item,int m)
{if(top==m) {
cerr<<"栈已满!"<<endl;exit(1);}
top++;
stack[top]=item;
}
//从栈中删除元素
ElemType Stack::Pop()
{if(top==0) {
cerr<<"栈为空!"<<endl;exit(1);}
top--;
return stack[top+1];
}
//检查栈是否已满
bool Stack::StackFull(int m)
{return top==m;}
//栈的输出
void Stack::StackPrint(int m)
{for(int i=0;i<m;i++)
cout<<setw(3)<<Pop();
}
//顺序堆栈的测试linearStack1m.cpp
#include<iostream.h>
#include<iomanip.h>
typedef int ElemType;
#include "linearStack1.cpp"
void main()
{cout<<"linearStack1m.cpp运行结果:\n";
int m;
Stack q,p,w;
cout<<"输入欲构造栈q的长度m:";cin>>m;
q.CreateStack(m,1);
cout<<"\n输出q栈元素(升序):\n";
q.StackPrint(m);cout<<endl;
cout<<"q栈:";
if(q.StackFull(m)==1)
cout<<"已满!\n";
else cout<<"未满!\n";
cout<<"创建栈p(降序):\n";
p.CreateStack(m,-1);
cout<<"p栈:";
if(p.StackFull(m)==1)
cout<<"已满!\n";
else cout<<"未满!\n";
cout<<"删除元素为:"<<p.Pop()<<endl;
cout<<"p栈:";
if(p.StackEmpty()==1)
cout<<"为空!\n";
else cout<<"为非空!\n";
cout<<"输出p栈元素:\n";
p.StackPrint(m-1);cout<<endl;
cout<<"创建栈w(无序):\n";
w.CreateStack(m);
cout<<"输出w栈元素:\n";
w.StackPrint(m);cout<<endl;
p.ClearStack();
cin.get();cin.get();}
linearStack1m.cpp运行结果:
输入欲构造栈q的长度m:10
输出q栈元素(升序):
4 8 13 14 21 23 52 57 66 88
q栈:未满!
创建栈p(降序):
p栈:已满!
删除元素为:87
p栈:为非空!
输出p栈元素:
81 78 75 60 39 17 12 11 5
创建栈w(无序):
输出w栈元素:
59 6 67 29 97 80 44 39 37 29
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -