C语言数据结构总复习(划重点):栈、队列

本文复习了数据结构中的栈和队列概念,并详细介绍了队列的顺序存储与链式存储方式,包括循环队列的操作及其实现代码。通过一个具体实例解释了循环队列中假溢出的问题及其解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:

总复习数据结构:栈、队列

为备考划重点自用,不喜勿喷。


一、栈

1.栈是只允许在一端进行插入或删除操作的线性表。

二、队列

1.队列是只允许在表的一端进行插入,在另一端进行删除的线性表。

2.队列的顺序存储

typedef struct
{
	elemtype data[maxsize];
	int front,rear;
}Queue;

3.循环队列的操作

*需要注意的是:为了区分队空和队满的情况,牺牲一个单元来区分队空和队满,入队时少用一个队列单元,“以队头指针在队尾指针的下一位置作为队满的标志”,如下图d2所示。

队满条件:(Q.rear+1)%maxsize==Q.front;

队空条件:Q.front==Q.rear;

基本操作:

1)初始化

void initqueue(Queue &Q)
{
    Q.rear=Q.front=0;
}

2)判队空

bool isempty(Queue Q)
{
	if(Q.rear==Q.front)
		return true;
	else
		return false;
}

3)入队

bool enqueue(Queue &Q,elemtype &x)
{
	if(Q.front==(Q.rear+1)%maxsize)
		return false;//队满,则不成功
	Q.data[Q.rear]=x;
	Q.rear=(Q.rear+1)%maxsize;//队尾指针加一取模 
	return ture;
}

4)出队

bool dequeue(Queue &Q,elemtype &x)
{
	if(Q.front==Q.rear)
		return false;//队空,则不成功
	x=Q.data[Q.front];
	Q.front=(Q.front+1)%maxsize;
	return true;	
}

4.队列的链式存储

typedef struct
{
	elemtype data;
	struct Linklist *next;
}Linklist;
typedef struct
{
	Linklist *front,*rear;
}Linkqueue;

5.链队的初始化

void initqueue(Linkqueue &Q)
{
	Linklist *L;//头结点 
	L=(Linklist *)malloc(sizeof(Linklist));
	L->next=NULL;
	
	Q->front=Q->rear=L; 
}

三、习题

1.循环队列的引入是为了克服()。

【解答】假溢出

 

2.阅读算法,并回答下列问题:

(1)设队列Q=(1,3,5,2,4,6)。写出执行算法test后的队列Q;

(2)简述算法test的功能。

void test(Queue *Q)

{   DataType e;

if (!QueueEmpty(Q))

{   e=DeQueue(Q);

test(Q);

EnQueue(Q,e);

}

}

具体的执行过程可以看做:
call test_1(): 取出1
call test_2(): 取出3
call test_3(): 取出5
call test_4(): 取出2
call test_5(): 取出4
call test_6(): 取出6
call test_7(): Queue is empty, return
return to test_6(): 放入6
return to test_5(): 放入4
return to test_4(): 放入2
return to test_3(): 放入5
return to test_2(): 放入3
return to test_1(): 放入1

【解答】

1)Q=(6, 4, 2, 5, 3, 1)

2)算法test的功能是把队列倒序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值