栈
来源:互联网 发布:淘宝上怎么卖点卡 编辑:程序博客网 时间:2024/05/21 17:06
#include <iostream>using namespace std;#include <string>typedef string T;class List{struct Node{T data;Node* next;Node(const T& t=T()):data(t){next = NULL;}};Node* head;public:List():head(NULL){}void clear(){while(head != NULL){Node* q = head->next;delete head;head = q;}}~List(){clear();}void insert_front(const T& t){Node* p = new Node(t);p->next= head;head = p;}void insert_back(const T& t){Node* p = new Node(t);if (head==NULL)head = p;else{get_pointer(size()-1)->next = p;}}void travel(){Node* p=head;while(p != NULL){cout << p->data << ' ';p = p->next; }cout << endl;}int size(){int cnt = 0;Node* p = head;while(p != NULL){cnt++;p = p->next;}return cnt;}T get_head(){if (head == NULL){throw "no head";}return head->data;}T get_tail(){if (head == NULL)throw "no tail";Node* p = head;while(p->next != NULL){p = p->next;}return p->data;}bool empty(){return head == NULL;}int find(const T& t){int pos = 0;Node* p = head;while(p != NULL){if (p->data== t)return pos;p = p->next;pos++;}return -1;}bool update(const T& o, const T& n){int pos = find(o);if (pos == -1)return false;Node* p = get_pointer(pos);p->data = n;return true;}private:Node* get_pointer(int pos){Node* p = head;for (int i=0; i<pos; i++)p = p->next;return p;}public:bool erase(const T& t){int pos = find(t);if (pos == -1)return false;if (pos ==0){Node* q = head->next;delete head;head = q;}else{Node* pre = get_pointer(pos-1);Node *cur = pre->next;pre->next= cur->next;delete cur;}}};class Stack{List l;public:void push(const T& t) //数据入栈 {l.insert_front(t);}void pop() //删除栈顶数据 {l.erase(l.get_head());}T top() //取栈顶上的数据 {return l.get_head();}bool empty() //判断栈是否为空 {return l.empty();}int size() //取得栈中元素个数 {return l.size();} void clear() //清空整个栈{l.clear();} };int main(){Stack s;s.push("good");s.push("morning");s.push("my");s.push("dear");s.push("friend");while(!s.empty()){cout << s.top() << ' ';s.pop();}return 0;}
阅读全文
0 0
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 栈
- 带最小值操作的栈
- tensorflow裁剪填充指定大小图片(一)
- 小白学tkinter(Spinbox组件)
- 关于出现VirtualAlloc pointer is null导致git崩溃的解决办法
- 关于scanf与换行符的问题
- 栈
- Spring全局异常捕捉实现HandlerExceptionResolver接口,在error-page配置捕捉异常
- gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
- 腾讯信鸽推送,部分手机不能接收到推送弹窗
- Oracle inner join、left join、right join 、+左边或者右边的区别
- 阿里内部分享:大数据业务平台两年发展历程-pefect,大数据的一些经验
- JavaScript 数据类型篇
- G
- MYSQL远程登录权限设置