栈—Stack
定义
栈是限定仅在表尾进行插入和删除操作的线性表
允许插入和删除的一端称为栈顶,另一端称为栈底
不含任何数据元素的栈称为空栈
栈又称为后进先出线性表,简称 L I F O LIFO LIFO结构(Last In First Out),或者称为先进后出,简称 F I L O FILO FILO结构(First In Last Out)
图示
栈操作
结构体
struct Node {
int data;
Node *next;
};
struct Stack {
Node *top;
int count;
};
初始化栈
//初始化栈
void InitStack(Stack *s) {
s->count = 0;
s->top = NULL;
}
入栈
//入栈
void Push(Stack *s, int n) {
Node *p = new Node;
p->data = n;
p->next = s->top;
s->top = p;
s->count++;
}
出栈
//出栈
void Pop(Stack *s) {
Node *p = new Node;
p = s->top;
s->top = s->top->next;
free(p);
s->count--;
}
打印栈
//打印栈
void Print(Stack *s) {
Node *p = s->top;
while (p) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
队列—Queue
定义
队列是只允许在一端进行插入操作,在另一端进行删除操作的线性表
队列是一种先进先出的线性表,简称 F I F O FIFO FIFO
允许插入的一端称为队尾,允许删除的一端称为队头
图示
队列操作
结构体
struct Node {
int data;
Node *next;
};
struct Queue {
Node *front,*rear;
};
初始化队列
//初始化队列
void InitQueue(Queue *q){
Node *p = new Node;
p->next = NULL;
q->front=q->rear=p;
}
入队
//入队
void EnQueue(Queue *q,int n){
Node *p = new Node;
p->data = n;
p->next = NULL;
q->rear->next = p;
q->rear = p;
}
出队
//出队
void DeQueue(Queue *q){
Node *p = new Node;
p = q->front->next;
if(p){
q->front->next = p->next;
}else{
q->front = q->rear;
}
free(p);
}
打印队
//打印队列
void Print(Queue *q){
Node *p = new Node;
p = q->front->next;
while(p){
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
结语
C++中的STL的stack和queue也是对栈和队列进行操作,那种方法更加简便
本篇文章到此结束,若有错误以及写的不明确的地方,还请在评论区指正或者联系我