考研数据结构-栈和队列

Posted sanchauncy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了考研数据结构-栈和队列相关的知识,希望对你有一定的参考价值。

栈是一种只能在一端进行插入或删除操作的线性表。

线性表:栈的逻辑结构属于线性表,只不过在操作上加了一些约束。

一端:可以插入或者删除元素的一端叫栈顶,另一端叫栈底。

顺序栈

 

1 int stack[maxSize];
2 int top = -1;
3 
4 //元素入栈
5 stack[++top] = x;
6 
7 //元素出栈
8 x = stack[top--]; 

 

链栈

 1 LNode *head = (LNode*)malloc(sizeof(LNode));
 2 head→next = NULL;
 3 LNode *top = NULL;
 4 
 5 //元素入栈
 6 top = (LNode*)malloc(sizeof(LNode));
 7 top→next = NULL:
 8 top→data = A;
 9 top→next = head→next;
10 head→next = top;
11 
12 //元素出栈
13 x = top→data;
14 head→next = top→next;
15 free(top);
16 top = head→next;
17 
18 /*head→next == NULL为真,则栈空;
19 只要有足够的内存,栈就不会满*/

队列

队列是一种插入元素只能在一端能进,删除元素只能在另一端进行的线性表。

线性表:队列的逻辑结构属于线性表,只不过在操作上加了一些约束。

一端:可以插入元素的一端叫队尾(rear)。

另一端:可以删除元素的一端叫对头(front)。

顺序队

1 int queue[maxSixe];
2 int front = 0,rear = 0;
3 
4 //元素进队
5 
6 queue[++rear] = x;
7 
8 //元素出队
9 x = queue[++front]

循环队列

 1 //入队
 2 rear = (rear+1)%maxSize;
 3 queue[rear]=x;
 4 
 5 //出队
 6 front = (front+1)%maxSize;
 7 x = queue[front];
 8 
 9 //front == rear 队空
10 
11 //front == (rear+1)%maxSize为真。

链队

1 typedef struct
2 LNode *front;
3 LNode *rear;
4 queue;

 

以上是关于考研数据结构-栈和队列的主要内容,如果未能解决你的问题,请参考以下文章

考研数据结构与算法栈和队列

(王道408考研数据结构)第三章栈和队列-第四节:特殊矩阵压缩方式

(王道408考研数据结构)第三章栈和队列-第一节:栈基本概念顺序栈和链栈基本操作

(王道408考研数据结构)第三章栈和队列-第三节2:栈的应用之递归

(王道408考研数据结构)第三章栈和队列-第三节1:栈的应用之括号匹配问题和表达式问题(前缀中缀和后缀)

计算机考研408数据结构考试内容