第十一周软件工程学习知识总结(《数据结构与算法》)

续上一周

3.双向链结表的队列 (Queue with Double-Linked List)

在 C 程序语言可使用 (非循环, non-circular) 双向链结表 (double-linked list) 实现队列:

双向链结表有两个指针 head (头) 与 tail (尾),head 指向队列的头节点,tail 指向队列的尾节点。

双向链结表的每个节点都有两个指针,prev 与 next,头节点的 next 指针为空值 (NULL);尾节点的 prev 指针为空值 (NULL). 当一个元素入队时,这个元素从队列的尾端加入,成为新的尾节点;

当一个元素出队时,这个元素必是在头节点,从队列的头离开,它的 prev 所指的节点成为新的头节点。

数据结构:

 

 

 

 

 

 1.头文件

 

 

 

 

 

 2.c档

 

 

 

 

 

 

 

 

 

 3.主程序

 

 

 

 4.运行结果

 

 

 

 

 

 

 

 

 

 3.栈(Stack)

限定性的线性表,将线性表的插入與删除操作限制在表的一端进行 Last In First Out (LIFO) 或 First In Last Out (FILO)

 

 栈的基本操作:

InitStack(S) : 初始化

initialize ClearStack(S) : 将栈S清空

IsEmpty(S) : 检查栈S是否为空栈

IsFull(S) : 检查栈S是否已满

Push(S, x) : 将元素x压入S的顶部

Pop(S, x) : 取出S顶部的元素x,并于S移除

GetTop(S , x) : 读取S顶部的元素x,不移除

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2020-05-31 21:29  angelwlily  阅读(179)  评论(0)    收藏  举报