队列(数据结构)

队列,一种特殊的线性表

它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

特点:只允许在一端输入,在另一端输出。输入端称为队尾,输出端称为队头

因此,队列,又称为先进先出表,类似于生活中的排队,先来的排在前头,后来的排在后头,一个一个办理业务。

队列有两种,一种叫做循环队列,另一种叫做链式队列。

 特点:先进先出

一.链式队列

1.结构体的定义

typedef struct LinkNode{
 	int data;
 	LinkNode* next;
 }*LinkNodePtr;
 
 /**
  *链列队.
  */
  typedef struct LinkQueue{
  	LinkNodePtr front;
  	LinkNodePtr rear;
  }*LinkQueuePtr;

2.初始化

创建一个链队列。

LinkQueuePtr initQueue(){
   	LinkQueuePtr resultPtr;
   	printf("In iniQueue, the address of resultPtr is %d\r\n",&resultPtr);
   	 resultPtr = (LinkQueuePtr)malloc(sizeof(LinkQueue));
   	 printf("The value of resultPtr is %d\r\n",&resultPtr);
   	//The header, the data is not useful.
   	LinkNodePtr headerPtr;
   	 printf("The address of headerPtr is %d\r\n",&headerPtr);
   	 headerPtr = (LinkNodePtr)malloc(sizeof(LinkNodePtr));
   	 printf("The value of headerPtr is %d\r\n",headerPtr);
   	headerPtr->next = NULL;
	   
	resultPtr->front = headerPtr;
	resultPtr->rear = headerPtr;
	return resultPtr; 
   }// Of initQueue

3.输出链队列里面的数据元素

void outputLinkQueue(LinkQueuePtr paraQueuePtr){
    	LinkNodePtr tempPtr;
    	printf("In paintLinkQueue, the address of tempPtr is %d\r\n",&tempPtr);
    	tempPtr = paraQueuePtr->front->next;
    	prin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值