数据结构:实验六(单循环链表实现链式队列)
2017-04-02 18:05
1011 查看
单循环链表实现的链式队列,只设头指针,不设尾指针
LLQueue.h:
#include "LLQueue.h" int main() { LLQueue lq; QueueInit(&lq); for (int i = 0; i < 5; i++) { QueueAppend(&lq, i + 1); printf("%d 入队列\n", i + 1); } int x; for (int i = 0; i < 5; i++) { QueueDelete(&lq, &x); printf("%d 出队列\n", x); } return 0; }
LLQueue.h:
#include "stdio.h" #include "stdlib.h" #define DataType int typedef struct sqnode { DataType data; sqnode *next; }LQNode; typedef struct { LQNode *real; }LLQueue; void QueueInit(LLQueue *Q) { //如果带头节点,改为 /* head->next=NULL; Q->real=NULL; */ Q->real = NULL; } int QueueNotEmpty(LLQueue Q) { //如果带头节点,则改为head->next==NULL if (Q.real == NULL) return 0; else return 1; } void QueueAppend(LLQueue *Q, DataType x) { LQNode *p; p = (LQNode *)malloc(sizeof(LQNode)); p->data = x; //如果带头节点,则改为 /* if(head->next!=NULL) { p->next=head->next; Q->real->next=p; Q->real=p; } */ if (Q->real != NULL) { p->next = Q->real->next;//新节点的next指向real的next,即队头,构成循环 Q->real->next = p;//队尾增加新节点 Q->real = p;//移动尾指针 } //如果带头节点改为 /* else { head->next=p; Q->real=p; Q->real->next = head->next; } */ else { Q->real = p;//移动尾指针 Q->real->next = Q->real;//构成循环 } } int QueueDelete(LLQueue *Q, DataType *x) { LQNode *p; //如果带头节点,判断条件改为head->next==NULL if (Q->real == NULL) { printf("队列已空无数据元素出队列"); return 0; } else { //如果带头节点改为 /* *x=head->next->data; p=head->next; head->next=p->next; if(head->next==NULL) Q->real=NULL; free(p); return 1; */ if (Q->real->next == Q->real)//如果是最后一个元素 { *x = Q->real->data; p=Q->real; Q->real = NULL; } else { *x = Q->real->next->data; p = Q->real->next;//队尾的next,即队头 Q->real->next = p->next;//队尾的两个next } free(p); return 1; } }
相关文章推荐
- (4) 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列
- 数据结构实验1 链表 实现学生信息存储,功能 增删改查,实现 结构类型
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构——使用双端链表实现队列(java实现)
- 数据结构之---C语言实现链式队列
- 数据结构与算法-----队列-使用链表(链式结构)实现
- 数据结构实验之队列一:排队买饭(用链表做了半天,我骄傲!)
- 数据结构与算法-----堆栈-使用链表(链式结构)实现
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构与算法——线性表链式存储(单循环链表)
- 数据结构(3)单循环链表 c++ 模板实现
- 数据结构实验1---约瑟夫环(“链表”实现)
- 看数据结构写代码(15)链式队列的实现(总结篇)
- 数据结构基础(14) --链式队列的设计与实现
- 数据结构基础(14) --链式队列的设计与实现
- Java单链表顺序和链式实现(数据结构五)
- (8)数据结构——队列(链表)实现
- 数据实验结构(二)——栈和队列的设计与实现
- 数据结构之链表、栈和队列 java代码实现
- 数据结构(五)——双链表、链式栈、链式队列 及实现