作业:
1. 手动实现顺序栈,要求实现数据结构中,所有栈的相关操作
#include <iostream>
#define MAXSIZE 20 //宏定义,栈的最大容量
using namespace std;template <typename T>
class stacklink
{
private:T data[MAXSIZE]; //数据元素int top = -1; //栈顶
public://无参构造stacklink() {}//有参构造stacklink(T e):data(e){}//析构函数~stacklink(){}//判空bool empty(){return (top == -1); //栈空则返回1}//判满bool full(){return (top == MAXSIZE-1); //栈满则返回1}//入栈T push(T e){if(1 == full()){cout << "栈满..." <<endl;return -1;}top++;data[top] = e;return 0;}//出栈T pop(){if(1 == empty()){cout << "栈空..." <<endl;return -1;}cout << "出栈元素为: " << data[top] <<endl;top--;return 0;}//栈的遍历void output();
};//全局函数,栈的遍历
template <typename T>
void stacklink<T>::output()
{cout << "栈内元素: ";for(int i=0;i<=top;i++) //循环遍历栈{cout << data[i] <<" ";}cout <<endl;
}
int main()
{stacklink<int> s;s.push(2); //入栈s.push(23);s.push(44);s.push(11);s.output(); //遍历 2 23 44 11s.pop(); //出栈 11s.pop(); //出栈 44s.output(); //遍历 2 23return 0;
}
运行结果:
2. 手动实现循环顺序队列,要求实现数据结构中,所有队列的相关操作
#include <iostream>#define MAXSIZE 20 //宏定义,队的最大容量
using namespace std;template <typename T>
class queue
{
private:T data[MAXSIZE]; //数据元素int front = 0; //队头int rear = 0; //队尾
public://无参构造queue() {}//有参构造queue(T e):data(e){}//析构函数~queue(){}//判空bool empty(){return (front == rear); //队空则返回1}//判满bool full(){return (front == (rear+1)%MAXSIZE); //队满则返回1}//入队T push(T e){if(1 == full()){cout << "队满..." <<endl;return -1;}data[rear] = e;rear = (rear+1)%MAXSIZE;return 0;}//出队T pop(){if(1 == empty()){cout << "队空..." <<endl;return -1;}cout << "出队元素为: " << data[front] <<endl;front = (front+1)%MAXSIZE;return 0;}//队列的遍历void output();//队列元素个数计算void count();
};//全局函数,栈的遍历
template <typename T>
void queue<T>::output()
{cout << "队内元素: ";for(int i=front;i!=rear;i=(i+1)%MAXSIZE) //循环遍历队{cout << data[i] <<" ";}cout <<endl;
}
template <typename T>
void queue<T>::count()
{cout << "队列中元素个数为: " << (MAXSIZE-front+rear)%MAXSIZE <<endl;
}int main()
{queue<int> q;q.push(2); //入队q.push(23);q.push(44);q.push(11);q.output(); //遍历 2 23 44 11q.count(); // 4q.pop(); //出队 2q.pop(); //出队 23q.output(); //遍历 44 11q.count(); //2return 0;
}
运行结果: