数据结构之链式队列
来源:互联网 发布:免费淘宝开店教程视频 编辑:程序博客网 时间:2024/05/18 13:09
#include <stdio.h>
#include "stdlib.h"
typedef struct MyQueueNode
{
int data;
structMyQueueNode *front;
}MyQueueNode;
typedef struct MyQueue
{
int length;
MyQueueNode *head;
MyQueueNode *real;
}MyQueue;
MyQueue* MyQueue_create()
{
MyQueue *queue = (MyQueue *)malloc(sizeof(MyQueue));
queue->head =NULL;
queue->real =NULL;
queue->length =0;
return queue;
}
int MyQueue_isEmpty(MyQueue *queue)
{
if(queue ==NULL) return1;
return queue->length ==0;
}
void MyQueue_enqueue(MyQueue *queue,int data)
{
if(queue ==NULL) return;
MyQueueNode *node = (MyQueueNode *)malloc(sizeof(MyQueueNode));
node->data = data;
node->front =NULL;
if(queue->head ==NULL)
{
queue->head = node;
}
else
{
queue->real->front = node;
}
queue->real = node;
queue->length ++;
}
int MyQueue_dequeue(MyQueue *queue)
{
if(queue ==NULL) return0;
MyQueueNode *topNode = queue->head;
queue->head = topNode->front;
queue->length --;
int data = topNode->data;
if(topNode)
{
free(topNode);
topNode = NULL;
}
if(queue->length ==0)
{
queue->head =NULL;
queue->real =NULL;
}
return data;
}
void MyQueue_myprintln(MyQueue *queue)
{
if(queue ==NULL || queue->length ==0) return;
MyQueueNode *p = queue->head;
while (p) {
printf("%d ", p->data);
p = p->front;
}
}
void main()
{
MyQueue *linkQueue = MyQueue_create();
MyQueue_enqueue(linkQueue,10);
MyQueue_enqueue(linkQueue,11);
MyQueue_enqueue(linkQueue,15);
MyQueue_enqueue(linkQueue,17);
MyQueue_enqueue(linkQueue,18);
MyQueue_myprintln(linkQueue);
int data =MyQueue_dequeue(linkQueue);
MyQueue_myprintln(linkQueue);
}
- 数据结构之链式队列
- 数据结构之链式队列
- 数据结构之链式队列
- 数据结构之链式队列
- 数据结构之队列(链式队列)
- Java数据结构之链式队列
- 【数据结构-队列】链式队列
- 常用数据结构之链式存储队列
- 数据结构之链式队列(优化版)
- 数据结构之---C语言实现链式队列
- 数据结构之链式队列的所有操作
- 数据结构学习之队列(链式存储)
- java 数据结构之 链式存储结构 队列
- java数据结构之链式队列的实现
- 数据结构之线性结构---队列 链式储存
- 数据结构之链式队列go言语实现
- 数据结构之java实现链式队列(三)
- 数据结构之队列(链式存储)
- S3C2440裸机程序【3】DM9000A
- 避免Activity内存泄露
- 孤寂疗
- iOS之等比例放大Button的大小
- 桶排序,冒泡排序,快速排序三者比较(例子说名)
- 数据结构之链式队列
- 设计模式 - 适配器模式
- leetcode 34. Search for a Range
- SVN工程状态标记消失问题
- LinkedList 中add 和 offer 的区别?
- C++STL中vector容器 begin()与end()函数、front()与back()的用法
- 获取MAC地址
- linux序列前序
- DNS原理总结及其解析过程详解(递归查询+迭代查询)