数据结构 —— 栈和队列
来源:互联网 发布:java和python大数据 编辑:程序博客网 时间:2024/05/22 03:09
数据结构——栈和队列
目录:
栈 --- 基础知识
栈 --- 练习题
队列 --- 基础知识
栈:
栈示意图(后进先出):
顺序栈:
顺序栈结构定义:
#define MAXSIZE 1024
struct Stack{
ElemType data[MAXSIZE];
int top;
};
操作函数:
push(); //入栈
pop(); //出栈
……….
链栈:
struct Lstack{ //链栈
ElemType data;
Lstack* next;
};
链栈示意图:
操作函数:
push(); //入栈
pop(); //出栈
……….
注意:
也可以直接调用系统已经写好的库函数:
#include <stack.h>
int main()
{
stack <int> s; //泛型,指定栈中数据类型
s.push(5); //将5送入栈
s.pop(5); //将5送出栈
……..
}
练习题:
//以下是训练压栈出栈等,栈的基本用法的简单题:
括号匹配(栈和队列)
十进制与八进制的转换(栈和队列)
相同序列(栈和队列)
回文(栈和队列)
队列:
队列示意图(先进先出):
栈是只对一头操作,队列是对两头都操作。
线队列:
线队列类型定义:
#define MAXSIZE 1024 //队列最大长度
struct SeQueue{
ElemType data[];
int front,rear;
//front,队头,删除端,线性表的表头;rear,队尾,插入端,线性表的表尾。
int num; //当前队列长度
};
操作函数:
push(); //入队
pop(); //出队
…………
注意:
front指向的是第一个数据的前一个位置。
rear指向的是最后一个数据的位置。
循环队列:
循环队列示意图:
循环队列类型定义:
#define MAXSIZE 1024
struct{
ElemType data[MAXSIZE];
int front,rear;
};
操作函数:
push(); //入队
pop(); //出队
……….
注意:
因为是循环队列,所以进队的时候不能简单的 +1了。
队头指针进1:(rear+1)%MAXSIZE
队尾指针进1:(front+1)%MAXSIZE
队列初始化:front=rear=0
队空条件:front==rear
队满条件:(rear+1)%MAXSIZE == front
怎么判断队满?
正常来说队满的时候front会等于rear,这就跟开始一样了。
所以要做一些设置。
有多种方法。
可以浪费最后一个位置。
用:if((rear+1)%MAXSIZE ==fiont //队满
来判断队满。
也有库函数
#include <queue.h>
使用类似栈。
链队列:
链队列示意图:
链队列类型定义:
struct LQueue{
ElemType data;
LQueue* next;
};
操作函数:
push(); //入队
pop(); //出队
……….
注意:
链队列是队尾进,队首出。
Freecode : www.cnblogs.com/yym2013
- 数据结构——栈和队列
- 数据结构 —— 栈和队列
- 数据结构——栈和队列
- 数据结构——栈和队列
- 数据结构-栈和队列——20150602
- 数据结构——栈和队列
- 数据结构——栈和队列
- 数据结构——栈和队列
- 数据结构——栈和队列
- JAVA数据结构——队列和栈
- 数据结构——链表、栈和队列
- python扩展数据结构—栈和队列
- <数据结构> 实验三 栈和队列——队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- 数据结构--栈和队列
- 数据结构-栈和队列
- 数据结构-栈和队列
- python Base64编码
- 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem G: Check The Check
- 烟大 Contest1025 - 《挑战编程》第二章:数据结构 Problem A: Jolly Jumpers
- 【资源页】(文章、工具等)
- freopen()——重定向标准输入输出流
- 数据结构 —— 栈和队列
- STL —— STL六大组件
- 数据结构 —— 递归和树
- 杭电 2041 超级楼梯
- 杭电 2044 一只小蜜蜂...
- 杭电 2050 折线分割平面
- 杭电 1018 Big Number
- 烟大 2238: 括号匹配(栈和队列)
- 烟大 2239: 十进制与八进制的转换(栈和队列)