用栈操作实现队列的操作
2015-08-30 11:11
232 查看
原文链接:点击打开链接
用栈实现下列队列操作:
push(x) 在队列末尾添加元素x
pop() 删除队列首的元素
peek() 返回队列首元素但不删除它
empty() 判断队列是否为空
用栈实现下列队列操作:
push(x) 在队列末尾添加元素x
pop() 删除队列首的元素
peek() 返回队列首元素但不删除它
empty() 判断队列是否为空
struct Queue { int data; struct Queue* next; }; typedef struct Queue Queue; /* Create a queue */ void queueCreate(Queue *queue, int maxSize) { queue = (Queue*)malloc(sizeof(Queue)); queue->next = NULL; Queue* end_of_queue = queue; while (maxSize--) { int data_in_node; Queue* q = (Queue*)malloc(sizeof(Queue)); if (NULL == q) break; printf("Please input the data of this node: "); scanf("%d", &data_in_node); q->next = end_of_queue->next; q->data = data_in_node; end_of_queue->next = q; end_of_queue = q; } } /* Push element x to the back of queue */ void queuePush(Queue *queue, int element) { Queue* q = (Queue*)malloc(sizeof(Queue)); if (NULL == q) return ; Queue* end = queue->next; while (NULL != end->next) end = end->next; q->next = end->next; end->next = q; } /* Removes the element from front of queue */ void queuePop(Queue *queue) { if (NULL == queue->next) return; Queue* top = queue->next; queue->next = top->next; free(top); } /* Get the front element */ int queuePeek(Queue *queue) { if (NULL == queue->next) return -1; return (queue->next->data); } /* Return whether the queue is empty */ bool queueEmpty(Queue *queue) { return (NULL == queue->next); } /* Destroy the queue */ void queueDestroy(Queue *queue) { if (NULL == queue->next) return ; Queue* ds = queue->next; Queue* dsNext = ds->next; while (NULL != dsNext->next) { free(ds); ds = dsNext; dsNext = dsNext->next; } free(dsNext); queue->next = NULL; }
相关文章推荐
- js获取表单值的两种方法
- Linux下nc的参数详解
- mysql索引详解(转)
- 图像的通道数问题
- Windows上编译最新的CURL,含有zlib,openssl
- NSURLConnection怎么把http改为https
- 【CF】【318div2D】【思维题】【DP|数学】
- ```**1到100之内的所有素数**
- epoll源码实现分析[整理]
- MD5加密代码
- <div>多行文本垂直居中
- Jquery Table 的基本操作
- Servlet监听器在开发中的应用案例
- gdb常用命令
- VVOL
- 找数(线筛,容斥)
- 16位AD,基准电压用3V,4V,5V的区别
- 最大公因数还可以这么玩!!!!
- lOG4j日志的使用
- mysql 视图