线性表----队列(链接表示)的基本操作
来源:互联网 发布:淘宝买二手吉他靠谱吗 编辑:程序博客网 时间:2024/06/08 19:19
#include <stdio.h>#include <stdlib.h>#include <conio.h>#define MAX 100/** *@Name:线性表--队列--链接表示 *@Description:链接队列的创建,元素的入队、出队、取队头元素,队列溢出的判断等基本操作。 *@Author:Freedoman *@Date: 2014-8-10 */struct Node/*链接队列元素结点类型*/ {int data;/*结点数据域*/struct Node * next;/*结点指针域*/};typedef struct Node * PNode;struct LinkedQueue /*链接栈类型*/{PNode head;/*队头*/ PNode tail;/*队尾*/ };typedef struct LinkedQueue * PLinkedQueue; /*函数声明*/PLinkedQueue createNullLinkedQueue(); int isNullLinkedQueue(PLinkedQueue curLinkedQueue);int enQueue(PLinkedQueue curLinkedQueue);int deQueue(PLinkedQueue curLinkedQueue);int loadQueueHeadElement(PLinkedQueue curLinkedQueue);void printLinkedQueue(PLinkedQueue curLinkedQueue);/*------------创建空队列(带头结点和尾结点)------------*/PLinkedQueue createNullLinkedQueue(){printf("创建空队列\n");PLinkedQueue curLinkedQueue = (PLinkedQueue)malloc(sizeof(PLinkedQueue));PNode p = (PNode)malloc(sizeof(Node));if(p != NULL){curLinkedQueue->head = p; curLinkedQueue->tail = curLinkedQueue->head;curLinkedQueue->head->next = NULL;printf("创建成功!\n");}else{printf("创建失败!\n");}return curLinkedQueue;} /*-------------判断当前队列是否为空------------*/int isNullLinkedQueue(PLinkedQueue curLinkedQueue){if(curLinkedQueue->head== curLinkedQueue->tail){printf("空队列!\n");return 1;}else{printf("非空队列!\n");return 0;}}/*-----------元素入队(限定在队尾操作)---------*/ int enQueue(PLinkedQueue curLinkedQueue){printf("元素入队\n");int data;printf("请输入元素>>>");scanf("%d",&data);PNode p = (PNode)malloc(sizeof(Node));if(p != NULL){p->data = data;p->next = NULL;curLinkedQueue->tail->next = p;curLinkedQueue->tail = p;printf("入队成功!\n");printLinkedQueue(curLinkedQueue);return 1;}return 0;} /*------元素出队(既定在队头操作)----------*/int deQueue(PLinkedQueue curLinkedQueue){// 出队可能产生下溢if(!isNullLinkedQueue(curLinkedQueue)){PNode temp = curLinkedQueue->head->next;curLinkedQueue->head->next = temp->next;if(temp->next == NULL){curLinkedQueue->tail = curLinkedQueue->head;}free(temp);printf("出队成功!\n");printLinkedQueue(curLinkedQueue);return 1;} else{printf("下溢!\n");}return 0;}/*---------取队头元素------------*/int loadQueueHeadElement(PLinkedQueue curLinkedQueue){if(!isNullLinkedQueue(curLinkedQueue)){int x = curLinkedQueue->head->next->data;printf("队头元素>>>>%d\n",x);return x;}return 0;}/*-------------从头到尾打印队列元素--------*/void printLinkedQueue(PLinkedQueue curLinkedQueue){PNode temp;temp = curLinkedQueue->head->next; printf("打印[");do{printf(" %d ",temp->data);temp = temp->next;}while(temp != NULL);printf("]\n");}int main(){int input; PLinkedQueue curLinkedQueue = NULL;printf("\n------链接队列的基本操作------\n");while(1){printf("\n 1_创建空队列\n 2_判断当前队列是否为空\n");printf(" 3_元素入队\n 4_元素出队\n 5_取队头元素\n 6_打印当前队列元素\n");printf("\n请选择>>>");scanf("%d",&input);switch(input){case 1 : curLinkedQueue = createNullLinkedQueue();break;case 2 : isNullLinkedQueue(curLinkedQueue);break;case 3 : enQueue(curLinkedQueue);break;case 4 : deQueue(curLinkedQueue);break;case 5 : loadQueueHeadElement(curLinkedQueue);break;case 6 : printLinkedQueue(curLinkedQueue);break;default : printf("当前输入有误!\n");}}return 0;}
0 0
- 线性表----队列(链接表示)的基本操作
- 线性表----队列(顺序表示)的基本操作
- 线性表----循环队列(顺序表示)的基本操作
- 线性表----链接栈的基本操作
- 顺序表示的线性表的基本操作
- 线性表的顺序表示和基本操作的实现
- 线性表的顺序表示及其基本操作
- 多态实现线性表(队列,串,堆栈),要求具备线性表的基本操作
- 数据结构笔记(二)线性表的链式表示和基本操作
- 数组表示的线性表(顺序表)的基本操作,以及合并两个非递减数组线性表
- C语言线性表循环队列的基本操作
- 线性表-队列的链式表示
- 线性表-循环队列的表示
- 线性表的顺序表示和操作
- 线性表的顺序和链式存储表示及基本操作的实验
- 线性表的基本操作(单链表)
- 线性表的基本操作(一)
- 线性表的顺序表示和实现基本操作之插入元素
- ios技术博客精选
- Yii CGridView 基本使用(一)初展身手
- Android SDK Android NDK Android Studio 官方下载地址
- 排序算法之归并排序
- No enclosing instance of type ThreadTest is accessible.错误解决
- 线性表----队列(链接表示)的基本操作
- 【深度探索STL】特殊容器 string
- 【数据库视频】耿建玲VS自考
- poj-3368 Frequent values 线段树
- uva 12260 Free Goodies DP+一点点贪心
- 为PHP摇旗呐喊!
- oc类命名规范
- Android Intent使用
- 项目团队提高企业软件质量的N种手段