链式存储结构1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

else 队尾指向下一 个结点 { Link_Queue->Rear->pNext=pNewQueue; Link_Queue->Rear=pNewQueue; } Link_Queue->Length++; }
5.出队(在队首删除一个元素):
int Del(struct LINK_QUEUE*Link_Queue) { 开辟一个新的 int y; 结点 struct NODE_TYPE *pNode; if(IsEmpty(Link_Queue)) { printf("Link_Queue Empty!\n"); return 0; }
int GetFront(struct LINK_QUEUE*Link_Queue) { int x; if(IsEmpty(Link_Queue)) 把表头的值赋给X,再 输出X return 0; x=Link_Queue->Front->Data; return x; }
7.取队尾:
int GetRear(struct LINK_QUEUE*Link_Queue) { int x; if(IsEmpty(Link_Queue)) 把表尾的值赋给X,再 输出X return 0; x=Link_Queue->Rear->Data; return x; }
Front
data 指针域
Rear
结构体定义
结点类型结构体定 1. struct NODE_TYPE 义:结构体类型名 { NODE_TYPE int Data; struct NODE_TYPE *pNext; }; 2. struct LINK_QUEUE { struct NODE_TYPE *front; struct NODE_TYPE *rear; int Length; };
程序编译及分析
• • • • ①创建一个空的链式队列; ②判断新建的链式队列是否为空; ③提示用户输入“链式队列的长度”; ④根据用户输入的“链式队列的长度”,逐一提示用户输入“ 链式队列中的各个元素”,完成链式队列的构造; • ⑤判断此时的链式队列是否为空; • ⑥调用子程序打印当前链式队列的队首元素和队尾元素; • ⑦编写打印链式队列元素的子程序PrintNode( ); • ⑧清空队列,连续3次做下列操作:入队4个元素,出队2个元 素,打印链式队列,打印当前链式队列的队首元素和队尾元素 ; ※要求:提供尽可能友好的人机对话界面,便于用户(非程序设 计者)使用。
数据结构课程设计
——链式存储队列
1. 对于链式存储队列的认识 2. 结构体定义
3. 程序编译及分析 4. 心得体会
队列是一种特殊的线性表,包含一个表头和表尾,
进行插入操作的端称为队尾(rear),进行删除操 作的端称为队头(front)。队列特点:先进先出。 队列中没有元素时,称为空队列。链式存储是把数 据元素存放在任意的存储单元里,这组存储单元可 以是连续的,也可以使不连续的。一个链式队列通 常用链表实现。其中,链表包括2个域:数据域和指 针域。数据域用来存放队列中的元素,指针域用来 存放队列中下一个元素的地址。
关于清空队列,可以看做是初 始化队列的重复动作。
4.入队(在队尾增加一个新元素):
void Add(struct LINK_QUEUE*Link_Queue,int x) { struct NODE_TYPE *pNewQueue; pNewQueue=(struct NODE_TYPE *)malloc(sizeof(struct NODE_TYPE)); pNewQueue->Data=x; if(IsEmpty(Link_Queue)) 分配内存 { Link_Queue->Front=pNewQueue; Link_Queue->Rear=pNewQueue; }
y=Link_Queue->Front->Data; pNode=Link_Queue->Front;
把表头的值赋 给Y
Link_Queue->Front=pNode->pNext; free(pNode); Link_Queue->Length--; 释放结 点 return y;
}
6.取队首:
• 子程序 • 主程序
ห้องสมุดไป่ตู้
1.初始化(创建空队列):
void InitQueue(struct LINK_QUEUE*Link_Queue) {
Link_Queue->Front=NULL; Link_Queue->Rear=NULL; Link_Queue->Length=0; }
初始化队列, 结构体类型名 为 LINK_QUEU E,队列头为 空,队列尾为 空,长度为0。 创建一空队列。
2.队列判空:
int IsEmpty(struct LINK_QUEUE*Link_Queue) { return (Link_Queue->Length==0); }
返回的队列长度为0,即队列为空。
3.清空队列:
void InitQueue(struct LINK_QUEUE*Link_Queue) { Link_Queue->Front=NULL; Link_Queue->Rear=NULL; Link_Queue->Length=0; }
谢谢大家!
L=Link_Queue->Front; for(i=1;i<=Link_Queue->Length;i++) { x=L->Data; printf("%d->",x); L=L->pNext; } printf("NULL!\n"); }
心得体会
1. 巩固了书本知识 2. 了解到了链式存储队列的原理和操作 3. 加强了团队合作精神
8.打印队列元素:
void PrintNode(struct LINK_QUEUE*Link_Queue) { int x,i; struct NODE_TYPE *L; if(IsEmpty(Link_Queue)) 空队列!! { printf("\tLink_Queue Empty!"); }
相关文档
最新文档