栈和队列

栈是一种特殊的线性表,栈只允许在固定的一端进行插入和删除元素操作。进行更改数据的一端被称为栈顶,另一端为栈底。栈中的元素遵循后进先出的原则。

栈的操作分为压栈和出栈。栈的插入为压栈,栈的删除操作为出栈。

因为栈要经常在一端进行插入删除操作,所以在实现上一般可以使用数组或者链表实现。

// 定长的静态栈
typedef struct Stack
{
    int _a[100];  //这里是开辟一个拥有定长空间的栈
    int _top;  //栈顶数据
}Stack;

 

 

1 //支持动态增长的栈结构
2 typedef struct Stack
3 {
4     int * _a;  
5     int _top;  //栈顶
6     int _capicity;  //容量
7 }Stack;

 

队列

队列只允许在一端进行数据操作,在另一端进行删除操作的特殊线性表,队列遵循先进先出的特点,就类似于日常生活中的排队。只允许在队尾入队,在队头出队。

队列需要在两端进行数据的操作,所以在实现上使用链表的结构。

 

 1 typedef struct Queuenode
 2 {
 3     int _data;
 4     Queuenode * _next;
 5 }Queuenode;
 6 
 7 
 8 typedef struct Queue
 9 {
10     Queuenode* _front; //队头
11     Queuenode* _rear;  //队尾
12 }Queue;

 

posted @ 2020-02-20 09:19  programchen  阅读(88)  评论(0)    收藏  举报