队列(二)——队列的链表实现方式
来源:互联网 发布:multisim13数据库下载 编辑:程序博客网 时间:2024/06/05 06:11
1.队列的单向链表的实现方法
return只可以返回一个值,单向循环链表来实现队列的时候可以只保留一个指针,因为保留rear指针能够很方便的表示出front指针,所以保留rear指针。
另外由于链表的第一个结点处理比较特殊,所以在初始化的时候需要单独处理。链表实现的队列思想也是第一个单元作为头结点,不存放数据,rear指针指向的总是尾结点(在循环链表中也就是头结点的上一个结点)。
2.实现方法
程序运行截图:
return只可以返回一个值,单向循环链表来实现队列的时候可以只保留一个指针,因为保留rear指针能够很方便的表示出front指针,所以保留rear指针。
另外由于链表的第一个结点处理比较特殊,所以在初始化的时候需要单独处理。链表实现的队列思想也是第一个单元作为头结点,不存放数据,rear指针指向的总是尾结点(在循环链表中也就是头结点的上一个结点)。
2.实现方法
用带表头的单向循环链表来实现
#include <stdio.h>#include <malloc.h>#define NULL0typedef struct sq{int data;struct sq *next;}ElemSN;ElemSN * in_quence(ElemSN *rear, int val) /*入队函数*/{ElemSN *p;p = (ElemSN *)malloc(sizeof(ElemSN));p->data = val;p->next = rear->next;rear->next = p;rear = rear->next;return rear;}int out_quence(ElemSN *rear){ElemSN *p = rear->next; /*rear的下一个结点是头结点*/int dat;p = p->next; /*p此时才指向第一个有数据的结点(表头结点的下一个结点)*/dat = p->data;rear->next->next = p->next; /*等价于head->next = p->next,因为rear的下一个结点是头结点*/free(p);return dat;}void print_quence(ElemSN *rear){ElemSN *p = rear->next;p = p->next; /*指向第一个有数据的单元*/do{printf("%d ", p->data);p = p->next;}while(p != rear->next);}ElemSN * clear_quence(ElemSN *rear){ElemSN *p, *q;p = rear->next;while(p != p->next){q = p->next;p->next = q->next;free(q);}return p;}int main(){ElemSN *rear, *s;int dat[6] = {1, 2, 3, 4, 5, 6};int i;rear = (ElemSN *)malloc(sizeof(ElemSN)); /*表头的创建*/rear->data = NULL;rear->next = rear;for(i = 0; i < 6; i++){rear = in_quence(rear, dat[i]);print_quence(rear);printf("\n");}printf("%d is out quence.\n", out_quence(rear)); /*出队一个元素*/print_quence(rear);printf("\n");rear = clear_quence(rear);return 0;}
程序运行截图:
注意:使用不带表头的循环链表也是可以实现的,但是对于队列为空时rear指针的值为多少,第一个结点如何插入,以及队列中只有一个元素的时候出队的操作都是需要特殊处理的。这里就不再具体实现了,因为带表头的链表相对于不带表头的链表操作上有相当多的方便之处。
0 0
- 队列(二)——队列的链表实现方式
- 队列(一)——队列的数组实现方式
- 队列的实现(链表方式)
- 队列的实现方式
- 数据结构Java实现——②队列-->队列的“奇葩”二 优先级队列
- 队列(二)队列的链表存储
- 链队列——队列的链式表示与实现
- 链队列——队列的链式表示和实现
- CPP实现队列,(数组的方式)
- 队列的实现(数组方式)
- 队列-C语言-链表的实现方式
- 队列的特殊实现方式
- 队列的方式与实现
- java实现队列(链表方式)
- 队列的简单实现(二)
- 数据结构基础(二)队列的实现
- Structure.Queue 队列(包含顺序队列,链表队列的实现)
- 数据结构 二、队列的实现
- Java线程池
- 输入详细异常信息到log文件里面
- 一个网站的诞生02--用Scrapy抓取数据
- [水]ZOJ1152 HDOJ1017
- JAVA图形类问题:ImageIcon和Image类区别
- 队列(二)——队列的链表实现方式
- 生物医学SCI论文投稿技巧
- VS2008調用時,出現「無法連接到 ASP.NET程式開發伺服器」或「webdev.webserver.exe」錯誤
- HDU_4506 小明系列故事——师兄帮帮忙
- JDOM生成XML文档的一般方法
- hdu-1196-Lowest Bit
- ubuntu 64位下安装wps
- qtopia_opensource-4.2.4配置时出现The system byte order could not be detected!
- 关于android中的单位(dp、sp)