数据结构 链表队列

 1 #include"stdio.h"
 2 #include"stdlib.h"
 3 typedef int DataType;
 4 typedef struct Seq
 5 {
 6     DataType data;//数据存储
 7     struct Seq *next;//指向下一个节点的指针
 8 }SeqList;
 9 typedef struct
10 {
11     SeqList *front,*rear;//定义头尾指针
12 }Link;
13 void initQueue(Link *s)
14 {
15     s->front = s->rear = NULL;
16 }
17 //进队
18 void inQueue(Link *s, DataType x)
19 {
20     printf("222");
21     SeqList *p = (SeqList*)malloc(sizeof(SeqList));//创建一个新节点
22     p->data = x;
23     p->next = NULL;
24     if(s->front == NULL) s->front = p;//判断该队列中是否有元素
25     else s->rear->next = p;
26     s->rear = p;
27 }
28 //出队
29 void outQueue(Link *s, DataType *x)
30 {
31     if(s->front == NULL)
32     {
33         printf("该队列为空");
34     }
35     else
36     {
37         SeqList *p = s->front;
38         *x = p->data;
39         s->front = s->front->next;//将队头移动到队头的下一个
40         if(s->front ==NULL) s->rear=NULL;//如果队头等于空的话那队尾也就等于空
41         free(p);
42     }
43 }
44 void printQueue(Link *s)
45 {
46     SeqList *p = s->front;
47     if(s->front == NULL) printf("该队列为空");
48     else
49     {
50         while(p!=NULL)
51         {
52             printf("%d\n",p->data);
53             p = p->next;
54         }
55     }
56 }
57 main()
58 {
59     Link *s;
60     printf("ddd");
61     s->front = NULL;
62     s->rear = NULL;
63     inQueue(s,1);
64     inQueue(s,2);
65     inQueue(s,3);
66     printQueue(s);
67
68 }

原文地址:https://www.cnblogs.com/sucker/p/10817270.html

时间: 2024-11-09 09:20:32

数据结构 链表队列的相关文章

基础数据结构 链表、栈、队列

数据结构是程序设计中一个非常重要的部分,基本的数据结构包括链表.栈和队列,当然高级一点的还有树.图等,实际上链表.栈和队列都是线性表,只是在操作和表示方式上有所不同,线性表用顺序结构表示就是顺序表,用链结构表示就是链表,如果对线性表的操作加以限制,只能有在表尾进行插入和删除元素,这就变成栈了,如果只能允许元素从表尾插入,表头删除,这就变成队列了. 链表 /* * 数据结构 链表 * 链式结构 */ #include <iostream> using namespace std; enum St

delphi.数据结构.链表

链表作为一种基础的数据结构,用途甚广,估计大家都用过.链表有几种,常用的是:单链表及双链表,还有N链表,本文着重单/双链表,至于N链表...不经常用,没法说出一二三来. 在D里面,可能会用Contnrs.pas.TStack/TQueue相关类,进行操作,不过里面的实现,并非使用的是链表实现,只是用TList,然后...实现的. 呵,TList怎么实现那些不是重点,本文着重是说一下自己使用链表的一些心得. 一:单链表: 单链表的用途,主要一个场景:队列(stack/queue),两者区别在于:s

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

数据结构-链队列的实现 1 链队列的定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已, 我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端结点,如下图所示. 空队列时,front和rear都指向头结点,如下图所示. 链队列的结构为: typedef int QElemType; /* QElemType类型根据实际情况而定,这里假设为int */ typedef struct QNode /* 结点结构 */ { QElemTy

链表队列

接下来把链表队列的代码分享给大家.因为还是链表操作,不做其他介绍. lqueue.h #ifndef _QUEUE_H #define _QUEUE_H #define MAXSIZE 10 typedef struct node { int data; struct node * next; } Node; typedef struct queue { Node * front; Node * rear; int size; } Queue; void q_init(Queue * queue

【C/C++学院】0802-链式栈/链表队列以及优先队列/封装链表库

链式栈 // stacklinknode.h #define datatype int struct stacknode { int num;//编号 datatype data;//数据 struct stacknode *pNext;//指针域 }; typedef struct stacknode StackNode;//简化 StackNode * init(StackNode * phead);//初始化 StackNode * push(StackNode * phead, int

数据结构链表学习

今天初步学习数据结构链表,学习过程中感觉对于指针的理解还差很多,而且对于VS的调试也不会使用,调查问题只能靠一遍一遍的梳理逻辑,效率不是一般的低下..接下来得赶紧学习下VS的使用.. 今天链表只是初步学习,写的例子也比较简单,如下: 定义链表的数据结构,只简单的定义了一个数据和一个指向后继的指针 1 struct List { 2 int num; 3 List *next; 4 }; 接下来就是链表的创建,返回一个指针地址赋给主函数中的头指针,用于之后的增删改查等等 1 List *creat

简单数据结构之队列模拟

1 /************************************************************************************** 2 * Function : 模拟队列 3 * Create Date : 2014/04/23 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性. 7 * 任何单位和个人不经本人允许不

数组队列 与 链表队列

做了些实验,感觉 用链表实现队列 比 用数组实现队列 性能好 进出队的每秒操作数比较 数组队列 enqueue 37,037 dequeue 4,166,666 链表队列 enqueue 277,778 dequeue 666,667 先入队n次,再出队n次的运行时间比较,单位是秒 出入队次数 | 数组队列运行时间 | 链表队列运行时间 1,000 0.01 0.01 10,000 0.04 0.04 100,000 2.7 0.4 1,000,000 4 最后一组,数组队列的半天没运行出来 下

C语言实现链表队列(基本操作及图示)

-------------------------------------------- 基本概念: 和栈相反,队列是一种先进先出(FIFO)的线性表.只允许在一端插入,在另一端删除. 允许插入的叫"队尾"(rear),允许删除的叫"队头"(front). 使用场景:操作系统的作业排队.在允许多道程序运行的计算机系统中,同时有几个作业运行.如果运行结果都需要通道输出,则按照请求输出的先后次序排队.每当通道传输完毕可以接受新的输出任务时,队头的作业先从队列中退出作输出