您的位置:首页 > 理论基础 > 数据结构算法

数据结构-队列-链表实现

2017-10-15 17:37 417 查看

代码实现

//队列 链表实现
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//定义一个链表
typedef struct _Node Node;
struct _Node{
int num;
Node * next;
};
//定义一个队列
typedef struct _Queue Queue;
struct _Queue{
Node * Front;
Node * Rear;
};

//创建一个队列
Queue * creatQueue(){
Node * node=(Node *)malloc(sizeof(Node));
node->next=NULL;
Queue * queue=(Queue *)malloc(sizeof(Queue));
queue->Front=node;
queue->Rear=node;
return queue;
}

//判断是否为空
bool isEmpty(Queue * queue){
return (queue->Front==queue->Rear);
}

//入队
void addQueue(Queue * queue,int num){
//创建一个节点
Node * node=(Node *)malloc(sizeof(Node));
node->next=NULL;
node->num=num;
//链接这个节点
queue->Rear->next=node;
queue->Rear=node;
}
//出队
int Delete(Queue * queue){
if(isEmpty(queue)){
return NULL;
}
else{
Node * node=queue->Front->next;
int num=node->num;
queue->Front->next=node->next;
free(node);
return num;
}
}

int main(){
Queue * queue=creatQueue();
for(int i=0;i<10;i++){
addQueue(queue,i);
}
for(int i=0;i<10;i++){
printf("%d\t",Delete(queue));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: