数据结构 栈 队列 链表
栈
1,栈只能从表的一端存取数据,另一端是封闭的。
2,在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。
进栈和出栈
基于 栈结构的特点,在实际应用中,通常只会对栈执行以下两种操作:
- 向栈中添加元素,此过程被称为"进栈"(入栈或压栈);
- 从栈中提取出指定元素,此过程被称为"出栈"(或弹栈);
栈的具体实现
栈是一种 "特殊" 的线性存储结构,因此栈的具体实现有以下两种方式:
- 顺序栈:采用顺序存储结构可以模拟栈存储数据的特点,从而实现栈存储结构;
- 链栈:采用链式存储结构实现栈结构;
栈的使用
1.栈存储结构可以帮我们检测代码中的括号匹配问题。
2.进制转换
3.浏览器回退功能
队列
队列,和栈一样,也是一种对数据的"存"和"取"有严格要求的线性存储结构。
通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。
不仅如此,队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素,同样要最先出队列。
队列存储结构的实现有以下两种方式:
- 顺序队列:在顺序表的基础上实现的队列结构;
- 链队列:在链表的基础上实现的队列结构;
两者的区别仅是顺序表和链表的区别,即在实际的物理空间中,数据集中存储的队列是顺序队列,分散存储的队列是链队列。
特点
- 数据从队列的一端进,另一端出;
- 数据的入队和出队遵循"先进先出"的原则;
队列的实际应用
实际生活中,队列的应用随处可见,比如排队买东西、医院的挂号系统等,采用的都是队列的结构。
链表
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
正式构建一个链表类
应该具有以下属性和方法
count 元素数量
head 头节点指针
insert 向指定位置插入元素
get/set 获取和修改节点值
remove 删除指定元素