链式队列的基本操作与实现
2017-11-02 13:46
441 查看
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <iostream> typedef int ElementType; //定义结点 typedef struct LinkNode{ ElementType data; struct LinkNode* next; } *StackNode, *QueueNode; //定义队列 typedef struct { LinkNode *front, *rear; } LinkQueue; //初始化队列 LinkQueue* InitQueue(LinkQueue* L){ printf("初始化队列\n"); L = (LinkQueue*)malloc(sizeof(LinkQueue)); //L->rear = L->front = NULL; L->front = L->rear = (LinkNode*)malloc(sizeof(LinkNode)); L->front->next = NULL; return L; } //判断队列是否为空 bool IsQueueEmpty(LinkQueue* L){ if (L->front == L->rear){ printf("队列为空\n"); return false; } return true; } //入队 LinkQueue* EnQueue(LinkQueue* Queue, ElementType data){ LinkNode* L = (LinkNode*)malloc(sizeof(LinkNode)); L->data = data; L->next = NULL; Queue->rear->next = L; Queue->rear = L; printf("入队元素为:%d\n", Queue->rear->data); return Queue; } //出队 LinkQueue* DeQueue(LinkQueue* L){ if (IsQueueEmpty(L) == false){ printf(":所以不能出队!\n"); return NULL; } printf("出队元素是:%d\n", L->front->next->data); //用这一句就够了 //L->front = L->front->next; //为了严谨,用一下语句 LinkNode* node = (LinkNode*)malloc(sizeof(LinkNode)); node = L->front->next; //printf("L->front=%d\n", L->front->data); L->front->next = node->next; //printf("L->front=%d\n", L->front->data); if (L->rear == node) L->front = L->rear; //printf("对头元素是:%d\n", L->front->next->data); free(node); return L; } // int main(void){ // LinkQueue* Queue; // Queue = InitQueue(Queue); // if (IsQueueEmpty(Queue) == true) // printf("初始化为空成功"); // EnQueue(Queue, 1);EnQueue(Queue, 2); // EnQueue(Queue, 3);EnQueue(Queue, 4);EnQueue(Queue, 5); // DeQueue(Queue);DeQueue(Queue); // DeQueue(Queue);DeQueue(Queue);DeQueue(Queue); // system("pause"); // return 0; // }
相关文章推荐
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
- 【队列】链式结构实现队列的基本操作
- 链式队列的基本操作实现c++
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 循环队列的基本操作实现
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 循环队列基本操作的实现(Java)
- 实验三 栈和队列的基本操作实现及其应用 (1)
- C++实现链式队列的操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 链表,顺序表的基本操作及其实现的栈与队列
- 优先队列的基本操作实现与应用(Java实现)
- 实现循环队列的基本操作
- redis基本操作之实现线程队列
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果