2026/5/21 19:10:44
网站建设
项目流程
黑龙江省建设网站首页,外发加工网会员,网站优化公司效果,环球资源的服务内容栈和队列是比较简单且常见的数据结构#xff0c;你可以使用C STL中的stack和queue容器来实现栈和队列#xff0c;当然#xff0c;如果你比较有追求#xff0c;也可以手搓栈和队列(虽然这个搓起来不是特别麻烦)#xff0c;本文重点讲解如何实现双链表实现栈和队列。
栈和队…栈和队列是比较简单且常见的数据结构你可以使用C STL中的stack和queue容器来实现栈和队列当然如果你比较有追求也可以手搓栈和队列(虽然这个搓起来不是特别麻烦)本文重点讲解如何实现双链表实现栈和队列。栈和队列介绍一句话带过吧栈先进后出可乐瓶见过吧你把东西放进去以后必须把上面的拿完你才可以拿到你想要的队列先进先出就是食堂排队先排进去的先出来栈的代码实现CSTL容器#includeiostream #includestdio.h #includestack using namespace std; // struct Node{ // Node* pre; // Node* next; // int data; // }; int main(){ stack int t; // 创建栈 t.push(1); //压栈 t.pop(); //出栈 for(int i 0 ; i 10 ; i){ t.push(i); //循环入栈 } int temp t.top(); //取栈顶元素 cout temp endl; }对这个操作不熟悉的也可以去这个网站看一下,一看就懂了C 容器类 | 菜鸟教程https://www.runoob.com/cplusplus/cpp-libs-stack.html双链表实现栈双链表因为可以从尾向头查找所以在实现栈和队列上会有较低的复杂度#includeiostream #includestdio.h using namespace std; struct Node{ Node* pre; Node* next; int data; }; Node* Tail NULL; //定义尾节点 void push(int data){//压栈操作 data为你想压入的元素 Node* top new Node(); top - data data; top - next NULL; top - pre Tail; Tail - next top; Tail top; } int pop(){//出栈操作同时返回栈顶元素 int data; data Tail - data; Node* newtop Tail - pre; delete Tail; Tail newtop; return data; } int main(){ Node* A new Node(); A - data 1; A - next Tail; A - pre NULL; Tail A; push(2); push(3); push(4); int temp pop(); cout temp endl; cout Tail - data endl; }队列的代码实现CSTL容器实现#includeiostream #includestdio.h #includequeue using namespace std; // struct Node{ // Node* pre; // Node* next; // int data; // }; int main(){ queue int q; for(int i 0 ; i 10 ; i){ q.push(i); //循环入队 } for(int i 0 ; i 10 ; i){ int tail q.back(); //获取队尾元素 int head q.front(); //获取队首元素 q.pop(); //出队操作 cout head tail endl; } }同样的不熟悉的可以去看看这个网站C 容器类 | 菜鸟教程https://www.runoob.com/cplusplus/cpp-libs-queue.html双链表实现队列#includeiostream #includestdio.h #includequeue using namespace std; struct Node{ Node* pre; Node* next; int data; }; Node* Tail NULL; //定义尾节点 Node* Head NULL; void push(int data){ Node* back new Node(); back - data data; back - next NULL; back - pre Tail; Tail - next back; Tail Tail - next; } void pop(){ Node* newfront Head - next; delete Head; Head newfront; } int main(){ Node* A new Node(); A - data 10086; A - next NULL; A - pre NULL; Head A; Tail A; for(int i 0 ; i 10 ; i){ push(i); cout Head - data Tail - data endl; } printf(----------------------------\n); for(int i 0 ; i 10 ; i){ cout Head - data Tail - data endl; pop(); } }这样就实现了手搓 stack 和 queue