#include<stdio.h>
#include<stdlib.h>
typedef struct QueueNode
{
int data;
struct QueueNode* next;
}LinkedQueueNode;
typedef struct LQueue
{
LinkedQueueNode* front; //隊頭指針
LinkedQueueNode* rear; //隊尾指針
}*LinkedQueue;
//鏈隊列的初始化
LinkedQueue Init_LinkedQueue()
{
LinkedQueue Q = (LinkedQueue)malloc(sizeof(LinkedQueue)); //為鏈隊頭、尾指針申請空間
LinkedQueueNode* head = (LinkedQueueNode*)malloc(sizeof(LinkedQueueNode));
if (head==NULL)
{
printf("申請隊列空間失敗\n");
}
if (head != NULL && Q != NULL)
{
head->next = NULL;
Q->front = head;
Q->rear = head;
}
return Q;
}
//判斷隊列空
int LinkedQueue_Empty(LinkedQueue Q)
{
if (Q->front == Q->rear)
{
return 1; //隊列為空
}
else
{
return 0;
}
}
//入隊
int Enter_LinkedQueue(LinkedQueue Q,int x)
{
LinkedQueueNode* node; //鏈隊節(jié)點指針變量
node = (LinkedQueueNode*)malloc(sizeof(LinkedQueueNode));
if (node == NULL)
{
return 0; //申請隊列空間失敗
}
node->data = x;
node->next = NULL;
Q->rear->next = node; //將新節(jié)點插入隊尾
Q->rear = node; //將隊尾元素設置為尾指針
return 1;
}
//出隊
int Delete_LinkedQueue(LinkedQueue Q, int* x)
{
LinkedQueueNode* node;
if (Q->front == Q->rear) //判斷隊列為空
{
return 0;
}
else
{
node = Q->front->next; //將原隊列列頂元素的下一個節(jié)點賦值給node
*x = node->data;
Q->front->next = node->next; //頭指針Q指向鏈隊列的下一個數(shù)據(jù)元素
if (node == Q->rear)
{
Q->rear = Q->front; //若隊列僅有一個數(shù)據(jù)元素,讓隊列為空
}
free(node);
return 1;
}
}
//取隊列頭數(shù)據(jù)元素
int GetFront_LinkedQueue(LinkedQueue Q, int* x)
{
if (Q->front == Q->rear) //判斷隊列為空
{
return 0;
}
*x = Q->front->next->data;
return 1;
}
int main()
{
//初始化
LinkedQueue Q;
Q = Init_LinkedQueue();
while (1)
{
printf("輸入1為入隊,輸入0為退隊\n");
int ret;
printf("請輸入選項\n");
scanf("%d", &ret);
if (ret == 1)
{
int x;
printf("請輸入需要入隊的值\n");
scanf("%d", &x);
Enter_LinkedQueue(Q, x);
continue;
}
else if (ret == 0)
{
int y = 0;
Delete_LinkedQueue(Q, &y);
printf("出隊的值為:\n");
printf("%d \n", y);
continue;
}
else
{
printf("選項輸入錯誤\n");
}
}
return 0;
}
文章來源地址http://www.zghlxwxcb.cn/news/detail-719334.html
文章來源:http://www.zghlxwxcb.cn/news/detail-719334.html
到了這里,關于(數(shù)據(jù)結構)鏈隊列的基本操作的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!