(七)链式队列的初始化、入队列和出队列
来源:互联网 发布:线性优化的最优解法 编辑:程序博客网 时间:2024/05/17 09:08
链式队列需要有队头指针和队尾指针才能唯一确定一个队列,头指针一般指向头结点,尾指针指向最后一个元素结点。空的队列就是队头指针和队尾指针都指向了头结点。在可以确地长度最大值时采用循环队列,无法估计长度的时候用链式队列。
结构定义
typedef int QElemType;typedef struct QNode{ QElemType data; struct QNode *next;}QNode,*QueuePtr;typedef struct{ //对头和队尾指针 QueuePtr front,rear;}LinkQueue;操作函数
//初始化Status InitQueue(LinkQueue *Q){ Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q->front) exit(OVERFLOW); Q->front->next = NULL; return OK;}//销毁队列Status DestroyQueue(LinkQueue *Q){ while(Q->front){ Q->rear = Q->front->next; free(Q->front); Q->front = Q->rear; } return OK;}//插入元素e到队尾Status EnQueue(LinkQueue *Q,QElemType e){ QueuePtr p = (QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data = e; p->next = NULL; Q->rear->next = p; Q->rear = p; return OK;}//出队列Status DeQueue(LinkQueue *Q,QElemType *e){ if(Q->front == Q->rear) return ERROR; QueuePtr p = Q->front->next; *e = p->data; Q->front->next = p->next; //当队列中最后一个元素被删除了,队列尾指针也丢失了 //因此需要对队尾指针重新赋值 if(Q->rear == p) Q->rear = Q->front; free(p); return OK;}Status OutputQueue(LinkQueue Q){ QueuePtr p = Q.front->next; while(p){ printf("元素的值是:%d\n",p->data); p = p->next; }}Main函数
int main() { LinkQueue Q; InitQueue(&Q); int x,i; QElemType e; printf("请输入要入队列几个数:"); scanf("%d",&x); for (i = 0; i < x; ++i) { printf("请输入要入队列元素值:"); scanf("%d",&e); EnQueue(&Q,e); } DeQueue(&Q,&e); DeQueue(&Q,&e); OutputQueue(Q); return 0;}
阅读全文
0 0
- (七)链式队列的初始化、入队列和出队列
- 链式队列操作,初始化,入队,出队
- (六)循环顺序队列的初始化、入队列、出队列
- 链式队列的入队出队操作
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 带头结点的循环链表表示队列的初始化、入队列和出队列的算法
- 大二队列的出队和入队分析(链式结构)C语言
- 链对列初始化/入队列/出队列/判空
- 采用链式存储实现队列的初始化、入队、出队操作。
- 用两个堆栈实现一个列表的功能(主要是入队列和出队列)
- 数据结构:循环队列(一)设置一个标志域后的入队列和出队列的算法
- 队列的入队和出队操作
- 队列的入队和出队
- 链队列、循环队列的实现(初始化、出队、入队、取队头元素、判空)
- 循环队列的操作(初始化,入队,出对,销毁,输出)
- 链队列的初始化、入队、出队等操作实现
- 循环队列的初始化、入队、出队等基本操作
- 链队列的初始化、入队、出队及打印(数据结构)
- 【scratch游戏编程】制作“水果忍者”
- Python3之shutil模块
- 20170918-20170924C#工作学习周总结
- 如何获取一个数的反码
- Eclipse常用快捷键
- (七)链式队列的初始化、入队列和出队列
- C#日期时间和Int32相互转换
- 深拷贝和浅拷贝(mutableCopy和Copy)详解
- jdk-Semaphore
- matlab 矩阵转置,图像水平翻转,左右翻转,subplot函数
- pywifi 模块的安装
- CSS3 3D transform变换
- python:关于函数返回return的问题
- Android 在布局里去掉抬头标题栏