ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《大话数据结构》第四章学习总结(一)

2022-02-09 22:29:59  阅读:164  来源: 互联网

标签:结点 队列 大话 元素 next 第四章 front 数据结构 rear


队列

队列的定义

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表

队列是一种先进先出 的线性表。允许插入的一端称为队尾,允许删除的一端为对头。

 

循环队列

队列顺序存储的不足

实现顺序存储需要建立一个数组,所谓入队操作,其实就是在队尾追加一个元素;出队操作,就是让所有的元素向前移动,保证队列的对头,即下标为0的位置不为空。

 

 由于出队时要移动所有的元素,为提高出队的性能,我们可以让对头不需要一定在下标为0的位置。

为了避免当一个元素的时候,对头和队尾重合使处理变得麻烦,引用两个指针,front和rear,指向对头元素和队尾元素,当front==rear时,为空对。

假溢出

当数组末尾元素已经占用,再向后加,就会产生数组越界的错误。

 循环队列的定义

我们把队列头尾相接的顺序存储结构称为循环队列。

 但是这样就会有一个问题,即当front==rear时,对内不一定为空。

解决办法有两个:

1.定义一个flag,当front=rear,且flag=0时队列为空,当front=rear,且flag=1时队列为满。

2.或者我们保留一个元素空间,也就是说,队列满时,数组中还有一个空闲单元。此时front=rear时,队列就空;当(rear+1)%size==front时,队列为满。

当rear>front时,队列长度为rear-front。

当rear<front时,队列长度为size-front+size.

通用的计算队列长度公式为:(rear-front+size)%size 

队列的链式存储结构及实现

队列的链式存储结构,其实就是线性表的单链表,只不过它能尾进头出而已,我们把它简称为链队列。 

入队chu

/* 插入元素e为Q的新的队尾元素 */
Status EnQueue(LinkQueue *Q,QElemType e)
{ 
	QueuePtr s=(QueuePtr)malloc(sizeof(QNode));
	if(!s) /* 存储分配失败 */
		exit(OVERFLOW);
	s->data=e;
	s->next=NULL;
	Q->rear->next=s;	/* 把拥有元素e的新结点s赋值给原队尾结点的后继,见图中① */
	Q->rear=s;		/* 把当前的s设置为队尾结点,rear指向s,见图中② */
	return OK;
}

 出队

/* 若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR */
Status DeQueue(LinkQueue *Q,QElemType *e)
{
	QueuePtr p;
	if(Q->front==Q->rear)
		return ERROR;
	p=Q->front->next;		/* 将欲删除的队头结点暂存给p,见图中① */
	*e=p->data;				/* 将欲删除的队头结点的值赋值给e */
	Q->front->next=p->next;/* 将原队头结点的后继p->next赋值给头结点后继,见图中② */
	if(Q->rear==p)		/* 若队头就是队尾,则删除后将rear指向头结点,见图中③ */
		Q->rear=Q->front;
	free(p);
	return OK;
}

标签:结点,队列,大话,元素,next,第四章,front,数据结构,rear
来源: https://blog.csdn.net/MogulNemenis/article/details/122850222

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有