栈和队列的实现
@TOC
一、栈
1.概念
一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的数据元素遵循后进先出的原则。注意从栈顶入,栈顶出
![]()
二 、栈的实现(顺序表)
1.函数的定义和结构体的创建——stack.h
复制代码
2.函数的调用——test.c
复制代码
3.栈的接口
1.初始化
复制代码
2.入栈
复制代码

3.移除栈顶元素
复制代码
4.出栈
复制代码

5.判断为空
复制代码
6.栈中元素个数
复制代码
7.内存销毁
复制代码
三、队列
1.概念
只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的原则。入队列:进行插入操作的一段称为队尾出队列:进行删除操作的一端称为对头注意 :对尾入,对头出
![]()
四、队列的实现(链表)
1.函数的定义和结构体的创建——queue.h
复制代码
2.函数的调用——test.c
复制代码
3.取一级指针的原因
正常来说,如果将 head 与 tail 放在 queuenode 内部,应该取二级指针,但是由于此时定义的是结构体为 queue 的变量,改变的是该变量的内部。所以只取一级指针就可以。
4.队列的接口的实现
1.初始化
复制代码
2.入队列
复制代码

3.删除数据
复制代码
4.取对头数据
复制代码

5.取队尾数据
复制代码

6.取队的元素个数
复制代码
7.判断为空
复制代码
8.内存销毁
复制代码
版权声明: 本文为 InfoQ 作者【lovevivi】的原创文章。
原文链接:【http://xie.infoq.cn/article/6eb654b4e51b5d1eaf1f76da4】。文章转载请联系作者。
评论