1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define ok 0
  4. #define error 1
  5. //链队列特点在于不仅有链的头指针和尾指针,还有组成链的每一个节点,所以结构体要设置两个
  6. typedef struct qlnode{
  7. int data;
  8. struct qlnode *next;
  9. }Qlnode;
  10. typedef struct {
  11. Qlnode *front;
  12. Qlnode *rear;
  13. }Ql;
  14. int InitQl(Ql *ql){
  15. ql->front=ql->rear=(Qlnode *)malloc(sizeof(Qlnode));
  16. if(!ql->front){
  17. printf("分配内存失败");
  18. exit(error);
  19. }//每一次都要判断分配内存是否成功了
  20. ql->front->next=NULL;//设置头结点为空
  21. printf("分配成功!\n");
  22. return ok;
  23. }
  24. int EnQl(Ql *ql,int e){
  25. Qlnode *p;
  26. p=(Qlnode *)malloc(sizeof(Qlnode));
  27. p->data=e;p->next=NULL;
  28. ql->rear->next=p;//队尾插入p
  29. ql->rear=p;//另p为队尾
  30. return ok;
  31. }
  32.  
  33. int DeQl(Ql *ql){
  34. int e;
  35. Qlnode *p;
  36. if(ql->front=ql->rear){//空的链队列的判决条件为头指针和尾指针均指向头结点
  37. printf("链队列为空");
  38. exit(error);
  39. }
  40. p=ql->front->next;
  41. e=p->data;
  42. ql->front->next=p->next;//重新赋予头结点后的第一个结点
  43. free(p);
  44. return ok;
  45.  
  46. }
  47. int Destroy(Ql *ql){
  48. while(ql->front){
  49. ql->rear=ql->front->next;
  50. free(ql->front);
  51. ql->front=ql->rear;//通过ql->rear来保存队头释放之前的下一节点,然后赋给下一次循环的新队头;
  52. }
  53. }
  54. int Traverse(Ql *ql){
  55. Qlnode *p=ql->front->next;
  56. while(p){
  57. printf("%d \n",p->data);
  58. p=p->next;
  59. };
  60. }
  61. void main(){
  62. Ql ql;
  63. int i,j;
  64. j=;
  65. InitQl(&ql);
  66. while(j<){
  67. printf("输入要插入的值:\n");
  68. scanf("%d",&i);
  69. EnQl(&ql,i);
  70. j++;
  71. }
  72. printf("\n");
  73. Traverse(&ql);
  74. //printf("%d \n",(ql.front->next)->data);ql->front->next->data,这样就不对因为ql不是指针,应该使用ql.xxx
  75. }

c语言描述的链队列的基本操作的更多相关文章

  1. 【数据结构】之队列(C语言描述)

    队列(Queue)是编程中最常用的数据结构之一. 队列的特点是“先进先出”,就像食堂排队买饭一样,先来的人排在前面,后来的人排在后面:前面的人先买饭,买完饭后离开这个队列.这就是队列的原理,它可以进行 ...

  2. 【数据结构】之栈(C语言描述)

    栈(Stack)是编程中最常用的数据结构之一. 栈的特点是“后进先出”,就像堆积木一样,堆的时候要一块一块堆到最上面,拆的时候需要从最上面一块一块往下拆.栈的原理也一样,只不过它的操作不叫堆和拆,而是 ...

  3. 队列的链式存储方式的实现(Java语言描述)

    链队列的结构示意图: 先进先出. QueueInterface.java//操作方法接口 package 队列的实现; public interface QueueInterface { public ...

  4. 数据结构 - 链队列的实行(C语言)

    数据结构-链队列的实现 1 链队列的定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已, 我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指 ...

  5. C语言实现链队列的初始化&进队&出队

    /*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...

  6. C语言——循环队列和链队列的基本运算

    // 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...

  7. C语言链队列

    链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型.只能通过操作头尾指针来操作队列. typedef ...

  8. 数据结构(java语言描述)

    概念性描述与<数据结构实例教程>大同小异,具体参考:http://www.cnblogs.com/bookwed/p/6763300.html. 概述 基本概念及术语 数据 信息的载体,是 ...

  9. 数据结构与抽象 Java语言描述 第4版 pdf (内含标签)

    数据结构与抽象 Java语言描述 第4版 目录 前言引言组织数据序言设计类P.1封装P.2说明方法P.2.1注释P.2.2前置条件和后置条件P.2.3断言P.3Java接口P.3.1写一个接口P.3. ...

随机推荐

  1. JS代码格式化排版工具,web文本编辑器

    js格式化代码工具:http://www.cnblogs.com/blodfox777/archive/2008/10/09/1307462.html web文本编辑器 :http://www.div ...

  2. pat1006. Sign In and Sign Out (25)

    1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  3. Kubernetes系列:(1) 初探

    1. 背景 在部门内容组织了一次K8s的培训,普及了下K8s的概念.框架.操作等,为便于后期查阅,也为了进一步深究K8s,因此开展K8s系列,周期不定- 2. 概念 (1) 含义:来自希腊语,意为&q ...

  4. 【Linux相识相知】文件查找(locate/find)

    在用linux操作系统的时候,当我们忘记之前某个文件存储的位置,但是知道其文件名或者模糊的知道其文件名,我们都可以通过文件查找工具来查找,linux提供两种常用的查找工具,locate和find,在日 ...

  5. bzoj 4574: [Zjoi2016]线段树

    Description 小Yuuka遇到了一个题目:有一个序列a_1,a_2,?,a_n,q次操作,每次把一个区间内的数改成区间内的最大值,问 最后每个数是多少.小Yuuka很快地就使用了线段树解决了 ...

  6. goto语句和标签

    goto 语句用于将执行流更改到标签处,虽然t-sql和pl/sql都提供了该语句,但是作为编程而言,我们不推荐使用此编程技术.要编写一个标签,应当在标识符后面加一个冒号.列如,下面示例使用goto语 ...

  7. JavaScript实现StringBuffer

    function StringBuffer() { this._strings = new Array(); } StringBuffer.prototype.Append = function(_s ...

  8. C#学习基础(1)命名约定

    c#语言规范建议使用特定大小写约定创建字标识符 Pascal 大小写     标识符中每个单词的首字母大写   用于类型名和成员名  例如:CarDeck,FirstName Camel 大小写   ...

  9. div居中方法总结

    在日常开发过程中,我们会经常使用到div居中来处理布局,今天我就把我在开发过程中,遇到的div居中处理方法总结一下,方便日后查看!        1. 水平居中:给div设置一个宽度,然后添加marg ...

  10. C# 判断List集合中是否有重复的项

    /*在.Net 3.5 以上*/ ).Count() >= ;