数据结构 队列 的 链式存储 实现 c语言

参考了 严蔚敏 的 《数据结构》(C语言版)
队列 是特殊的 线性表 ,规则就是先入队列的数据先出队列。
本篇的队头指针指向一块空间, 此空间指向的下一个空间才是队列的最前面的结点,尾结点就是指向最后一个元素。

#include <iostream>
using namespace std;


#define QElemtype int 
#define Status    bool 

typedef struct QNode{
	QElemtype data;					//数据 
	struct QNode * next;			//指向下一个结点 
}  * QueuePtr, QNode;

typedef struct {
	QueuePtr front;					//头指针 
	QueuePtr rear;					//尾指针 
}LinkQueue;

//初始化队列 
Status InitQueue(LinkQueue & Q){ 
	Q.front = Q.rear = (QueuePtr)malloc(sizeof(QElemtype));
	if(!Q.front) return false;
	
	Q.front->next = NULL;
	return true;
} 

//销毁队列
Status  DestoryQueue(LinkQueue &Q){
	
	while(Q.front){
		Q.rear = Q.front->next;
		free(Q.front);
		Q.front = Q.rear;
	}
} 

//入队
Status EnQueue(LinkQueue & Q, QElemtype e){
	//生成一个结点 
	QueuePtr p = (QueuePtr)malloc(sizeof(QElemtype));
	if(!p) return false;
	p->data = e; p->next = NULL;
	Q.rear->next = p;
	Q.rear  = p;
	return true;
} 

//出队
Status DeQueue(LinkQueue & Q, QElemtype &e){
	if(Q.front==Q.rear) return false;
	QueuePtr p = Q.front->next;
	e = p->data;
	Q.front->next = p->next;
	if(Q.rear == p){
		Q.rear = Q.front;
	}
	free(p); 
	return true;
} 

int main(int argc, char** argv) {
//	QElemtype e;
//	LinkQueue q;
//	InitQueue(q);
//	EnQueue(q,1);
//	EnQueue(q,2);
//	EnQueue(q,3);
//	DeQueue(q,e);
//	cout<<e<<endl;
//	DeQueue(q,e);
//	cout<<e<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值