#include<stdio.h>
#include<stdlib.h>
typedef int E;
typedef struct ListNode* Node;
typedef struct Queue* FlagQueue;
//创建链表结构体
struct ListNode{
E element;
struct ListNode*next;
};
//创建队列头尾
struct Queue{
Node front,rear;
};
//初始化队列
//变量队列头尾结点
int initQueue(FlagQueue queue)
{
Node node = malloc(sizeof(struct ListNode));
if(node==NULL)
{
return 0;
}
queue->rear = queue->front = node;
return 1;
}
//入队
//变量队列头尾结点,入队元素
int offerQueue(FlagQueue queue,E element)
{
Node node = malloc(sizeof(struct ListNode));
if(node==NULL)
{
return 0;
}
node->element = element;
queue->rear->next=node;
queue->rear=node;
node->next = NULL;
return 1;
}
//出队
//队列头尾结点
int pullQueue(FlagQueue queue)
{
if(queue->front==queue->rear)
{
return 0;
}
Node tmp=queue->front->next;
queue->front ->next=queue->front ->next->next;
if(queue->rear==tmp)
{
queue->rear=queue->front;
}
free(tmp);
}
//打印队列
//队列头尾结点
void printQueue(FlagQueue queue)
{
printf("<<<");
Node node = queue->front->next;
while(node!=NULL)
{
printf("%d ",node->element);
node = node->next;
}
printf("<<<");
}
int main()
{
struct Queue queue;
initQueue(&queue);
for(int i = 0;i<5;i++)
{
offerQueue(&queue,i*100);
printQueue(&queue);
printf("\n");
}
return 0;
}
数据结构笔记(七)链表实现队列
于 2024-03-12 14:43:20 首次发布