[置顶] 数据结构——队列的链式存储结构以及实现
2016-10-29 16:04
489 查看
队列也是一种特殊的线性表,只允许在一端进行插入操作,在另一端进行删除操作。允许插入的一段为对尾,允许删除的一端为队头。本次记录的是队列的链式存储结构以及实现。该存储结构有两个指针,一个指向头节点,称为头指针(front);一个指向队尾,称为尾指针(rear)。当front==rear时,表示空队列。当需要在队列中插入元素时,需要将队尾结点指向新插入的结点,然后将尾指针指向新插入的结点。当要在队列中进行删除操作时,只需让头指针指向队头结点的下一个结点即可。实现代码如下:
运行结果:
#include "iostream" using namespace std; #define OK 1 #define OVERFLOW -1 #define ERROR 0 typedef int ElemType; typedef int Status; typedef struct QNode { ElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front;//队头指针 QueuePtr rear;//队尾指针 }LinkQueue; //队列链式表示 //队列初始化 Status InitQueue(LinkQueue &Q) { Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); Q.front->next = NULL; Q.rear->next = NULL; return OK; } //删除元素 Status DeleteQueue(LinkQueue &Q, ElemType &e) { if (Q.front == Q.rear) return ERROR;//判断是否是空队列 QueuePtr p; p = Q.front->next; //将要删除的对头结点暂存给p e = p->data;//保存将要删除结点的值 Q.front->next = p->next;//将元队列头后继p->bext赋给头结点后继 if (Q.rear == p) Q.rear = Q.front;//删除元素之前,队列中只有一个元素。 free(p); return OK; } //插入元素到队列中 Status InsertQueue(LinkQueue &Q, ElemType e) { QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); if (!p) exit(OVERFLOW); p->data = e; p->next = NULL; Q.rear->next = p;//将p插入尾指针所指向的队尾结点后面 Q.rear = p;//尾指针指向新插入的结点 return OK; } //遍历队列中的元素 Status VisitQueue(LinkQueue Q) { if (Q.front == Q.rear)//如果是空队列.. { cout << "空队列" << endl; return ERROR; } QueuePtr p; p = Q.front->next;//p指向队头结点 while (p)//p不为空时 { cout << p->data << " ";//输出p指向的结点的值 p = p->next;//指针后移 } cout << endl; return OK; } int main() { LinkQueue Q; InitQueue(Q); InsertQueue(Q, 1); InsertQueue(Q, 2); InsertQueue(Q, 3); InsertQueue(Q, 4); InsertQueue(Q, 5); VisitQueue(Q); int e; DeleteQueue(Q, e); InsertQueue(Q, 6); VisitQueue(Q); getchar(); return 0; }
运行结果:
相关文章推荐
- [置顶] 数据结构——循环队列存储结构以及实现
- [数据结构]程杰队列的链式存储结构及实现代码
- 队列的链式存储结构以及实现
- 数据结构-队列的链式存储实现操作
- 数据结构单链队列——链式存储实现
- C语言 队列的链式结构的实现与表示 数据结构 队列的实现与表示
- JAVA实现队列 队列的链式存储结构及操作
- 队列的链式存储结构及实现
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- 栈的链式存储结构以及实现
- 4.2.2 队列的链式存储结构及实现
- 队列的链式存储结构及实现
- 数据结构(六)---队列的链式存储的实现---java版
- 队列的链式存储结构及实现
- C++实现队列之链式存储结构
- 栈的链式存储结构以及实现
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 数据结构学习之队列的链式存储的C++实现
- 队列的链式存储结构及实现
- 重学数据结构003——栈的基本操作及实现(链式存储)