当前位置:网站首页>Class implementation of linear stack and linear queue (another binary tree pointer version)
Class implementation of linear stack and linear queue (another binary tree pointer version)
2022-07-07 22:49:00 【Qingshan's green shirt】
Class implementation of stack and queue ( Instead of STL)
List of articles
distinguish
1. expression :count++—— operation : to count+1—— Value of expression :count The value of the original ( Not added 1 Previous value )
2. expression :++count —— operation : to count+1—— Value of expression :count Add 1 Later value
1. Stack
Linear stack
// Linear stack
class stack {
public:
//1. Pressing stack
void Push(int m) {
data[top++] = m;// Assign values first and then ++
}
//2. Pop up top element
int Pop() {
return data[--top];// First -- To assign a value
// If you don't need to return direct top-1 Return type int Change it to void
}
//3. Initialization of stack
void InitStack() {
top = 0;
}
//4. Sentenced to empty
bool Empty() {
if (top == 0) return true;
return false;
}
//5. Take the top element of the stack but don't delete
int Top(){
return data[top-1];//!!! Note that there !!!
}
private:
int top;// Top pointer of stack ( Point to the element to be put , This can be changed by yourself )
int data[1000];// The static array is put on the stack
};
Stack for storing binary tree pointers
// Put the linear stack of binary tree nodes
class stack{
public:
//1. initialization
void InitStack(){
top = 0;
}
//2. Binary tree pointer stack
void Push(TreeNode *p){
stack[top++] = p;
}
//3. Bomb stack
void Pop(){
top--;
}
//4. Sentenced to empty
bool Empty() {
if (top == 0)return true;
return false;
}
//5. Take the top element of the stack
TreeNode* Top( ){
return stack[top-1];
}
private:
int top;
TreeNode *stack[512];
};
2. queue
The pointer settings of the head and tail of the queue in the code below
front— Point to the team header element
rear— Point to the last position of the tail element ( The next place to insert )
Linear queue
// Linear queue
class Queue {
public:
//1. Initialization function
void InitQueue( ) {
rear = front = 0;
}
//2. Determines if the queue is empty ( Not too serious )
bool QueueEmpty() {
if (rear == front) return true; // If it's empty, return to true
else return false;
}
//3. The team
bool EnQueue(int e) {
if (rear == MAXSIZE) return false;// This sentence must have a meaning ! Or the array is out of bounds !( Array range MAXSIZE-1)
data[rear++] = e;
return true;
}
//4. Out of the team Direct output version
int DeQueue() {
// Out of the team is the top of the team
if (rear == front) return false;
int x = data[front++];
return x;
}
//4.5 Out of the team Only out of the team without output
void PopQueue(){
front = front + 1;// Note that there !
}
//5. Take the team leader element ( Return to the first element )
TreeNode* Front(){
return data[front];
}
private:
int front, rear;
int data[MAXSIZE];
};
A queue for storing binary tree pointers
// Put the queue of binary tree nodes
class Queue {
public:
//1. Initialization function
void InitQueue( ) {
rear = front = 0;
}
//2. Determines if the queue is empty
bool Empty() {
if (rear == front) return true; // If it's empty, return to true Not absolutely !
else return false;
}
//3. The team
bool Push(TreeNode* e) {
if (rear == MAXSIZE) return false;// There has to be Otherwise, the array will be out of bounds !
data[rear++] = e;
return true;
}
//4. Delete team leader element
void Pop(){
front = front + 1;// Note that there ! rear front Are increasing backwards
}
//5. Return to the first element
TreeNode* Front(){
// An array ?
return data[front];
}
private:
int front, rear;// Pointer to a party — Point to the last position of the tail element Team head pointer — Point to the team header element
TreeNode* data[MAXSIZE];// It stores pointers instead of nodes ! Don't save the whole node
};
边栏推荐
- ASP.NET Core入门五
- Force deduction - question 561 - array splitting I - step by step parsing
- Details of the open source framework of microservice architecture
- Revit secondary development - intercept project error / warning pop-up
- 微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
- Visual design form QT designer design gui single form program
- 详解全志V853上的ARM A7和RISC-V E907之间的通信方式
- Revit secondary development - get the thickness / length / height of the beam
- Leetcode1984. Minimum difference in student scores
- ASP. Net core introduction V
猜你喜欢
ASP. Net core introduction V
Leetcode206. Reverse linked list
Cannot find module 'xxx' or its corresponding type declaration
Matplotlib快速入门
Antd date component appears in English
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
Yarn cannot view the historical task log of yarn after enabling ACL user authentication. Solution
UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xf9 in position 56: illegal multibyte sequence
0-5vac to 4-20mA AC current isolated transmitter / conversion module
Matplotlib quick start
随机推荐
Amesim2016 and matlab2017b joint simulation environment construction
[azure microservice service fabric] the service fabric cluster hangs up because the certificate expires (the upgrade cannot be completed, and the node is unavailable)
Get the exact offset of the element
Debezium系列之:mysql墓碑事件
Customer case | China law network, through observing the cloud, greatly shortens the time of fault location
Revit secondary development - project file to family file
新版代挂网站PHP源码+去除授权/支持燃鹅代抽
How to close eslint related rules
6-3 find the table length of the linked table
如何选择合适的自动化测试工具?
How to write an augmented matrix into TXT file
The essence of analog Servlet
Failed to initialize rosdep after installing ROS
Force deduction - question 561 - array splitting I - step by step parsing
Firefox browser installation impression notes clipping
PHP method of obtaining image information
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
7-51 combination of two ordered linked list sequences
. Net automapper use
变量与常量