链队列(C语言实现)学习记录
来源:互联网 发布:搜索文件软件 编辑:程序博客网 时间:2024/06/01 11:44
链队列(C语言实现)学习记录
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0/***内容: 链队*作者:Guozhu Zhu*时间: 2017/11/21*/typedef int ElemType;typedef int Status;typedef struct Node{ ElemType data; struct Node* next;}Node;typedef struct LinkedQueue{ struct Node* front; //头指针 struct Node* rear; //尾指针}LinkedQueue, *pLinkedQueue;void InitLinkedQueue(pLinkedQueue* Q);//初始链队列Status LinkedQueueEmpty(pLinkedQueue Q);//判空Status enLinkedQueue(pLinkedQueue Q, ElemType e);//入队Status deLinkedQueue(pLinkedQueue Q, ElemType* e);//出队void GetHead(pLinkedQueue Q, ElemType *e);//获取队头元素Status DestroyLinkedQueue(pLinkedQueue Q);//销毁链队列int main(){ pLinkedQueue Q; ElemType e; printf("链队列的基本运算\n"); printf("(1)初始化链队列\n"); InitLinkedQueue(&Q); printf("(2)判空\n"); if(LinkedQueueEmpty(Q) == 1){ printf("空\n"); } else { printf("非空\n"); } printf("(3)入队\n"); enLinkedQueue(Q, 1); enLinkedQueue(Q, 2); enLinkedQueue(Q, 3); printf("(4)判空\n"); if(LinkedQueueEmpty(Q) == 1){ printf("空\n"); } else { printf("非空\n"); } printf("(5)获取队头元素\n"); GetHead(Q, &e); printf("%d\n", e); printf("(6)出队 \n"); while(LinkedQueueEmpty(Q) != 1){ deLinkedQueue(Q, &e); printf("%d\n", e); } printf("(7)销毁链队列\n"); DestroyLinkedQueue(Q); return 0;}//初始化链队列void InitLinkedQueue(pLinkedQueue* Q){ (*Q) = (struct LinkedQueue*)malloc(sizeof(struct LinkedQueue)); (*Q)->front = (*Q)->rear = NULL; //初始化时指向为空}//判空Status LinkedQueueEmpty(pLinkedQueue Q){ return (Q->rear == NULL);}//入队Status enLinkedQueue(pLinkedQueue Q, ElemType e){ struct Node* p; p = (struct Node*)malloc(sizeof(struct Node)); p->data = e; p->next = NULL; if(Q->front == NULL){ Q->front = Q->rear = p; } else { Q->rear->next = p; Q->rear = p; } return TRUE;}//出队Status deLinkedQueue(pLinkedQueue Q, ElemType *e){ struct Node* t; //保存删除的节点 if (Q->rear == NULL) {//队列为空时 return FALSE; } else { t = Q->front; if (Q->front == Q->rear) { //当只有一个节点时 Q->front = Q->rear = NULL; } else { //当有多个节点时 Q->front = Q->front->next; } (*e) = t->data; free(t); } return TRUE;}//获取队头元素void GetHead(pLinkedQueue Q, ElemType *e){ if(Q->front == Q->rear){ return ; } (*e) = Q->front->data; return ;}//销毁Status DestroyLinkedQueue(pLinkedQueue Q){ struct Node* p = Q->front, *r; if(p != NULL){ r = p->next; while(r != NULL){ free(p); p = r; //r = r->next; r = p->next; } } free(p); free(Q); return TRUE;}
分享(share )是快乐的,也是见证个人的成长历程,文章主要为平时学习积累,基于自身认知不足之处在所难免,也恳请大家指正,共同进步
阅读全文
0 0
- 链队列(C语言实现)学习记录
- 栈(C语言实现)学习记录
- 单向链表(C语言实现)学习记录
- 双向链表(C语言实现)学习记录
- 算法学习记录五(C++)--->两个栈实现队列
- C语言实现链队列
- C语言队列的实现--学习组合设计(一)
- 队列 C语言实现
- 队列C语言实现
- C语言实现队列
- 队列 c语言实现
- C语言实现队列
- C语言实现队列
- C 语言实现队列
- c语言实现队列
- C语言实现队列
- C语言队列实现
- C语言实现队列
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- vue学习-过滤器
- input file图片上传并回显
- 如何在VS2013+QT5.3环境下使用自定义信号与槽函数
- 个人总结42
- 链队列(C语言实现)学习记录
- 设计模式--简单工厂
- H5+JS+相对单位rem实现第三方支付页(输入金额+模拟数字键盘+自适应布局+大写金额)
- 最大子段-n个数求和最大且连续的子段-最简单的一维dp,动态规划入门教程,包听懂
- Headfile !头文件的原理与实践编写。 摘自外网 -learn.cpp.com
- C#语言的正则表达式(Regex)详解
- 文章标题
- 第一次写博文
- 数据结构与算法 学习摘要