数据结构之链队列
程序员文章站
2022-05-04 15:57:06
...
#include<stdio.h>
#include<stdlib.h>
//链表中的头结点结构
typedef struct QNode{
int data;//数据域
struct QNode *next;//引用域
}QNode;
//创建链式队列的函数
//初始化函数
QNode *initQueue(){
//创建一个头结点
QNode *queue=(QNode*)malloc(sizeof(QNode));
//对头结点进行初始化
queue->next=NULL;
//返回头结点的地址
return queue;
}
//入队函数
QNode *enQueue(QNode *rear,int data) {
//为新结点创建一片内存空间
QNode *elem=(QNode*)malloc(sizeof(QNode));
//将插入的元素赋值给新结点的数据域
elem->data=data;
//新结点指针域指向NULL;
elem->next=NULL;
//建立队尾结点与新结点的逻辑关系
rear->next=elem;
//队尾指向新结点(队尾始终指向入队元素)
rear=elem;
printf("入队元素为:%d\n",rear->data);
//返回队尾地址
return rear;
}
//出队操作
void deQueue(QNode *top,QNode *rear){
//判断队列是否为空
if(top->next==NULL){
printf("队列为空!!!\n");
return;
}
//创建指针p指向队头的下一个结点
QNode *p=top->next;
printf("出队元素为:%d\n",p->data);
//队头移向下一个结点
top->next=p->next;
//判断是否还剩下两个元素,如果是的话就将队尾指向队头结点
if(rear==p){
rear=top;
}
//释放p结点空间
free(p);
}
main(){
//创建队尾,队头指针
QNode *rear,*top,*queue;
queue=rear=top=initQueue();//创建头结点
//入队
rear=enQueue(rear,8);
rear=enQueue(rear,88);
rear=enQueue(rear,888);
//出队
deQueue(top,rear);
deQueue(top,rear);
//入队
rear=enQueue(rear,999);
//出队
deQueue(top,rear);
}
上一篇: PHP实现发送异步请求方法
下一篇: php操纵mysqli数据库