栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言链队列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言链队列

链队列是由一个指向头结点和一个指向尾结点的两个指针及链表组成的。遵循数据先进先出的特点,这就意味着它只能从头结点处出队,从尾结点插入。使得删除和插入大大节省了时间,时间复杂度为O(1)。

代码

#include 
#include 

typedef struct LinkNode{
	int data;
	struct LinkNode *next;
}LinkNodePtr; 

typedef struct LinkQueue{
	LinkNodePtr* front;
	LinkNodePtr* rear;
}*LinkQueuePtr;

LinkQueuePtr initqueue(){
	LinkNodePtr *p = (LinkNodePtr*)malloc(sizeof(LinkNodePtr));
	LinkQueuePtr tempQueue = (LinkQueuePtr)malloc(sizeof(LinkQueue));
	
	p->next = NULL;
	tempQueue->front = p;
	tempQueue->rear = p;
	
	return tempQueue;
}

void outputqueue(LinkQueuePtr paraQueue){
	LinkNodePtr *p =  paraQueue->front->next;
	while(p!=NULL){
		printf("%d ",p->data);
		p = p->next ;
	} 
	printf("n");
}

void enqueue(LinkQueuePtr paraQueue,int paraValue){
	LinkNodePtr *p = (LinkNodePtr*)malloc(sizeof(LinkNodePtr));
	p->data = paraValue;
	p->next = NULL;
	
	paraQueue->rear->next = p;
	paraQueue->rear = p;
}

int dequeue(LinkQueuePtr paraQueue){
	int x;
	LinkNodePtr *p = paraQueue->front->next;
	while(p==NULL){
		printf("链队为空n");
		return -1;
	}
	paraQueue->front->next = p->next;
	x = p->data;
	
	if(paraQueue->rear == p){
		paraQueue->rear = paraQueue->front;
	}
	free(p);
	
	return x;
}

void testLinkQueue(){
	LinkQueuePtr tempQueuePtr;
	tempQueuePtr = initqueue();
	enqueue(tempQueuePtr, 10);
	enqueue(tempQueuePtr, 30);
	enqueue(tempQueuePtr, 50);

	outputqueue(tempQueuePtr);

	printf("dequeue gets %drn", dequeue(tempQueuePtr));
	printf("dequeue gets %drn", dequeue(tempQueuePtr));
	printf("dequeue gets %drn", dequeue(tempQueuePtr));
	printf("dequeue gets %drn", dequeue(tempQueuePtr));

	enqueue(tempQueuePtr, 8);
	outputqueue(tempQueuePtr);
}

int main(){
	testLinkQueue();
	return 1;
}

为了方便理解空间的使用情况,以下将展示内存地址的调试代码。通过对代码运行时指针本身地址,指针指向的地址的分析。可以知道在各个函数中局部变量分配的空间可以重复利用,不过该空间是静态内存,如果动态分配的内存则不能。代码中结点分配的空间是依次相邻的。这里要说一下指针的地址是指针本身的地址,指针的值是其指向的空间的地址。

内存使用情况

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892488.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号