1.手动实现顺序栈,要求实现数据结构中,所有栈的相关操作
#include <iostream>
#define MAXSIZE 16
using namespace std;
template <typename T>
class Stack{
private:
T data[MAXSIZE]; //数据元素
public:
int top; //栈顶
public:
Stack() {
top = -1;
}
//入栈
bool push_Stack(T d) {
if(top == MAXSIZE-1)
return false;
else{
top++;
this->data[top] = d;
return true;
}
}
//出栈
bool pop_Stack() {
if(top == -1)
return false;
else{
cout << this->data[top] << endl;
top--;
return true;
}
}
//遍历
bool output_Stack(){
if(top == -1)
return false;
else{
cout << "------------------------" << endl;
for(int i=0;i<=top;i++)
{
cout << data[i] << " ";
}
cout << endl;
cout << "------------------------" << endl;
return true;
}
}
//析构
~Stack() {
top = -1;
cout << "析构函数" << endl;
}
};
int main()
{
Stack<double> s;
cout << "------------------------" << endl;
cout << "-------1.栈的插入--------" << endl;
cout << "-------2.栈的删除--------" << endl;
cout << "-------3.栈的遍历--------" << endl;
cout << "-------0.退出程序--------" << endl;
cout << "------------------------" << endl;
while(1)
{
int c;
cout << "请输入您的选择>>> ";
cin >> c;
switch(c)
{
case 1:{
double data;
cout << " 请输入入栈的值>>> ";
cin >> data;
s.push_Stack(data);
}break;
case 2:{
s.pop_Stack();
}break;
case 3:{
s.output_Stack();
}break;
case 0:return 0;
default:{
cout << "输入错误,请重新输入" << endl;
}break;
}
}
return 0;
}
2.手动实现循环顺序队列,要求实现数据结构中,所有队列的相关操作
#include <iostream>
#define MAXSIZE 8
using namespace std;
template <typename T>
class Queue{
private:
T data[MAXSIZE]; //数据元素
public:
//队头:第一个元素下标
int front;
//队尾:最后一个元素后面的下标
int rear;
public:
Queue() {
front = 0;
rear = 0;
}
//入队
bool en_Queue(T d) {
if(front == (rear+1)%MAXSIZE){
cout << "队满" << endl;
return false;
}
else{
this->data[rear] = d;
rear = (rear+1)%MAXSIZE;
return true;
}
}
//出队
bool de_Queue() {
if(rear == front){
cout << "队空" << endl;
return false;
}
else{
cout << this->data[front] << endl;
front = (front+1)%MAXSIZE;
return true;
}
}
//遍历
bool output_Queue() {
if(rear == front)
return false;
else{
cout << "------------------------" << endl;
for(int i=front;i!=rear;i=(i+1)%MAXSIZE)
{
cout << data[i] << " ";
}
cout << endl;
cout << "------------------------" << endl;
return true;
}
}
//析构
~Queue() {
front = 0;
rear = 0;
cout << "析构函数" << endl;
}
};
int main()
{
Queue<double> q;
cout << "---------------------------" << endl;
cout << "-------1.顺序队列入队-------" << endl;
cout << "-------2.顺序队列删除-------" << endl;
cout << "-------3.顺序队列遍历-------" << endl;
cout << "-------0.退出程序-----------" << endl;
cout << "---------------------------" << endl;
while(1)
{
int c;
cout << "请输入您的选择>>> ";
cin >> c;
switch(c)
{
case 1:{
double data;
cout << " 请输入入队的值>>> ";
cin >> data;
q.en_Queue(data);
}break;
case 2:{
q.de_Queue();
}break;
case 3:{
q.output_Queue();
}break;
case 0:return 0;
default:{
cout << "输入错误,请重新输入" << endl;
}break;
}
}
return 0;
}