• 作者:老汪软件
  • 发表时间:2024-01-10 17:00
  • 浏览量:

队列也是线性表,也是分为两种的:1、顺序队列 2、链队列

顺序队列

#include 
#include 
typedef struct {
	char *base;
	int front;
	int erer;
	int size;
}SqQueue;
void initSqQueue(SqQueue *queue,int size){
	queue->base=(char*)malloc(sizeof(char)*size);
	queue->erer=0;
	queue->front=0;
	queue->size=size;
}
//入队 
void enqueue(SqQueue *queue,char value){
	if(((queue->erer+1)%queue->size)==queue->front){
		printf("队满操作\n");
	}else{
		queue->base[queue->erer%queue->size]=value;
		queue->erer=++queue->erer%queue->size;
	}
}
//出队 
void dequeue(SqQueue *queue){
	if(queue->front!=queue->erer){
		printf("%c",(queue->base)[queue->front]);
		queue->front=++queue->front%queue->size;
	}else{
		printf("队空操作!\n");
	}
}
int getSize(SqQueue *queue){
	return 	(queue->erer-queue->front+queue->size)%queue->size;
}
int main(){
	SqQueue queue;
	initSqQueue(&queue,10);
	enqueue(&queue,'I');
	enqueue(&queue,' ');
	enqueue(&queue,'L');
	enqueue(&queue,'o');
	enqueue(&queue,'v');
	printf("%d\n",getSize(&queue));
	system("pause");
	return 0;
}

链队列

#include 
#include 
typedef struct lqSqNode {
	char value;
	struct lqSqNode *next;
}*LinkSQ,lqSqNode;
typedef struct LqQueue {
	lqSqNode *front;
	lqSqNode *erer;
	int size;
}LqQueue;
//初始化链队列   
void initLqQueue(LqQueue *queue){
	LinkSQ linksq=(LinkSQ)malloc(sizeof(lqSqNode));
	linksq->next=NULL;
	queue->front=linksq;
	queue->erer=linksq;
	queue->size=0;
}
//入队 
void enqueue(char value,LqQueue *queue){
	lqSqNode *node=(lqSqNode*)malloc(sizeof(lqSqNode));
	node->value=value;
	node->next=NULL;
	queue->erer->next=node;
	queue->erer=node;
	++queue->size;
}
//出队 
void dequeue(LqQueue *queue){
	if(queue->front->next!=NULL){ 
		lqSqNode *node=queue->front->next;
//		printf("%c\n",node->value);
		queue->front->next=node->next;
		free(node); 
		--queue->size;
	}else{
		printf("队空操作!\n");
	}
}
int main(){
	LqQueue queue;
	initLqQueue(&queue);
	enqueue('i',&queue);
	enqueue('L',&queue);
	enqueue('k',&queue);
	enqueue('l',&queue);
//	dequeue(&queue);
//	dequeue(&queue);
//	dequeue(&queue);
//	dequeue(&queue);
//	dequeue(&queue);
	printf("%d\n",queue.size);
	system("pause");
	return 0;
}

上一个图形绘制2

下一个自定义代码块详解

相关文章

元风软件管理员

元风软件技巧专注分享操作系统、办公软件和手机应用的技巧方法,致力提升软件爱好者的学习和工作效率。

热门文章