队列,一种特殊的线性表
它只允许在表的前端(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