# 链式存储#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100//存储空间初始分配量
#define STACKINCREMENT 10//存储空间分配增量
#define TURE  1
#define FALSE 0
#define OK   1
#define ERROR 0
#define OVERFLOW -2typedef struct QNode{int data;struct QNode *next;
}QNode,*QueuePtr;typedef struct{QueuePtr front;   //队头指针QueuePtr rear;    //队尾指针
}LinkQueue;
//批量存入数据
int create(LinkQueue &Q){int i,n;QNode *p;printf("请输入需要存入的元素个数:");scanf("%d",&n);while(n<=0){printf("\n元素个数小于了“1”,请重新输入元素个数:");scanf("%d",&n);}printf("请输入元素:\n");for(i=n;i>0;--i){p=(QueuePtr)malloc(sizeof(QNode));scanf("%d",&p->data);Q.rear->next=p;             //尾指针后移Q.rear=p;                   //放入元素
    }p->next=NULL;return OK;
}//构建空队
int InitQueue_Q(LinkQueue &Q){Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front){printf("存储空间分配失败!!");exit(OVERFLOW);}Q.front->next=NULL;return OK;
}//打印队列中的元素
int pr(LinkQueue &Q,int e)
{QueuePtr p;p=Q.front->next;if(Q.front==Q.rear)    return ERROR;printf("\n队列中的元素为:\n");while(p){printf("%d\n",p->data);p=p->next;}return OK;
}int GetHead_Q(LinkQueue &Q,int &e){if(Q.rear==Q.front)return ERROR;QueuePtr p;p=Q.front->next;               //将原队列的头结点赋值给pe=p->data;printf("队头元素为:%d\n",e);return OK;
}//队尾插入元素
int EnQueue_Q(LinkQueue &Q,int &e){  QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode));if(!p){                   //存储分配失败printf("存储空间分配失败!!!\n");exit(OVERFLOW);   }printf("请输入插入元素:");scanf("%d",&e);p->data=e;                          //e赋值给p指向的空间p->next=NULL;                     //p指向NULLQ.rear->next=p;Q.rear=p;                           //将p赋给Qreturn OK;
}
// 删除队列头元素
int DeQueue_Q(LinkQueue &Q,int &e){QNode *P;if(Q.front==Q.rear) return ERROR;P=Q.front->next ; e=P->data;       Q.front ->next =P->next;          //将原对头的后继p->next赋值给头结点后继if(Q.rear ==P)                 //当队列中只有一个元素时,q->rear指向头结点Q.rear =Q.front;free(P);printf("删除的元素为:%d",e);return OK;
}
// 销毁队列
int dest(LinkQueue &Q){while(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}InitQueue_Q(Q);  //队销毁后,调用create()从新创建一个空队,因为初始化不在witch语句里return OK;
}void OperateMenu(){printf("\n\n--------------请选择元素处理方式---------\n\n");printf("注:此程序为队的实现,故只能对序列尾进行元素的插入和删除\n\n");printf("0> 退出程序\n\n");printf("1> 批量存入数据\n\n");printf("2> 获取队头元素\n\n");printf("3> 队尾插入元素\n\n");printf("4> 删除队头元素\n\n");printf("5> 打印队列\n\n");printf("6> 销毁队列\n\n");printf("请选择对元素的处理:");
}void main()
{LinkQueue Q; int w,e,k,boo=1;printf("注:此测试过程输入值应全为数字\n\n");printf("请用户选择初始化队或退出程序:\n\n");printf("队初始化请输入:'1'\n\n");printf("退出请选择'0'或 其它!!\n\n");printf("请选择:");scanf("%d",&w);if(w==1){if(InitQueue_Q(Q))printf("\n构建空队成功!!");elseprintf("\n构建失败!!");OperateMenu();scanf("%d",&k);while(k){switch(k){       case 0:break;case 1:boo=create(Q);if(boo)printf("\n存入成功!!\n");elseprintf("\n存入失败!!\n");break;case 2:boo=GetHead_Q(Q,e);if(boo)printf("\n获取成功!!\n");elseprintf("\n队为空,获取失败!!\n");break;case 3:boo=EnQueue_Q(Q,e);if(boo)printf("\n插入成功!!\n");elseprintf("\n插入失败!!\n");break;case 4:boo=DeQueue_Q(Q,e);if(boo)printf("\n删除成功!!\n");elseprintf("\n队为空,删除失败!!\n");break;case 5:boo=pr(Q,e);if(boo)printf("\n打印成功!!\n");elseprintf("\n队为空,打印失败!!\n");break;case 6:boo=dest(Q);if(boo)printf("\n 销毁成功!!\n");    elseprintf("\n销毁失败!!\n");}OperateMenu();scanf("%d",&k);}}
//    return OK;
}

转载于:https://www.cnblogs.com/Vera-y/p/9971268.html

c_数据结构_队的实现相关推荐

  1. C_数据结构_链式二叉树

    # include <stdio.h> # include <malloc.h>struct BTNode {int data;struct BTNode * pLchild; ...

  2. 【数据结构_选择题】(D22 0520)

    [数据结构_选择题](D22 0520) 1.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间. ( A )   A 顺序表   B 双链表    ...

  3. c语言枚举变量自增报错,C_数据结构与算法(1):C语言基础

    C_数据结构与算法(一):C语言基础 致初学者的我:一切都是由浅入深. 每种语言都有每种语言的特性,基本的特性是相同的,下面依照惯例写hello world,相关编译后面再介绍. // C语言用&qu ...

  4. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序

    数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...

  5. 【数据结构_选择题】(D21 0519)

    [数据结构_选择题](D21 0519) 1.设一个有序的单链表中有n个结点,现要求插入一个新结点后使得单链表仍然保持有序,则该操作的时间复杂度 ( D )   A O(log2n)   B O(1) ...

  6. 数据结构c语言版袁和金答案,_数据结构_课程教学中的案例设计及应用_袁和金.pdf...

    _数据结构_课程教学中的案例设计及应用_袁和金 第 16 期 90 2013 年 8 月 25 日 Computer Education G642 袁和金 (华北电力大学 计算机系,河北 保定 071 ...

  7. 【数据结构_选择题】(D20 0518)

    [数据结构_选择题](D20 0518) 1.对于顺序存储的线性表,访问结点和增加结点的时间复杂度为( C )   A O(n) O(n)   B O(n) O(1)   C O(1) O(n)    ...

  8. 陈越数据结构_第一周

    陈越数据结构_第一周 1. 最大子列和问题 是第一周最后讲到的4种算法的实验题,属于基本要求,一定要做: 题目见PAT 输入样例: 6 -2 11 -4 13 -5 -2 输出样例: 20 1.1 解 ...

  9. 数据结构_浙大(C语言) 20211228-20220108

    <数据结构> 浙大(C语言) 课程练习网站: 拼题A(Programming Teaching Assistant):https://pintia.cn/ 本课程的编程练习将在这里布置. ...

  10. python什么是数据结构_〖Python〗-- 数据结构

    [数据结构] 什么是数据结构? 定义:简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中.比如:列表.集合与字典等都是一种数据结构. PS:"程序=数据结构+算法" 列表 ...

最新文章

  1. 通讯速率_什么是通讯?
  2. How to install OpenCV 3.x in Linux
  3. 利用nginx搭建http和rtmp协议的流媒体服务器
  4. 一套完整的防火墙系统通常是由屏蔽路由器和代理服务器组成
  5. T511K表之工资常量SIINS的用途
  6. 旅行商问题动态规划matlab,旅行商问题的解法
  7. oracle高级复制管理里面,配置高级复制问题,请大家指点!
  8. 并联机器人市场呈现快速增长之势
  9. 无界瀑布屏惊艳亮相!5G水桶机vivo NEX 3正式发布
  10. 尝试笔记 01 之 CSS 边角上的标签
  11. anaconda安装——添加镜像源
  12. mysql php sdk_PHP连接MySQL数据库
  13. Day002 20210207
  14. 使用folium制作出行地图
  15. java课程设计文档_Java课程设计-文档相似性检查系统(完整)测试版
  16. 为什么数据库的内容像加密了_意外的负担(或者为什么我认为加密所有内容都不是个好主意)
  17. 微信小程序获取用户头像和昵称(填写头像昵称能力)
  18. php 生成文件出错,php生成excel文件打开报错?!!!
  19. Python三步爬取VMgirls小姐姐图片
  20. html5 无插件视频播放器,多功能流媒体播放器网页无插件直播EasyPlayer.js如何实现播放完自动循环播放...

热门文章

  1. 解决办法:Centos 7 SSH连接超时自动断开
  2. JAVA的图形性能,慢在哪里之分析
  3. NVIDIA解码器代码官方示例
  4. 亲身经历:如何判断一个字符在a/z之前?
  5. 博客积分排名进入前4万
  6. const 成员函数
  7. java中quickstart_Beam编程系列之Java SDK Quickstart(官网的推荐步骤)
  8. python爬虫常用模块介绍(1)_python爬虫常用模块介绍(1)
  9. mysql指定库执行sql语句_对多个mysql的一部分库进行执行sql语句
  10. linux 文件前缀,【整理】Linux系统中通过前缀加点,即.xxx表示隐藏文件