数据结构之队列
2013-07-19 17:37
155 查看
queue.h
queue.c
queue_test.c
#ifndef __QUEUE_H__ #define __QUEUE_H__ typedef struct Queue_node { void *data; struct Queue_node* next; }Queue_node; typedef struct Queue { struct Queue_node * head; struct Queue_node *tail; }Queue; int queue_init(struct Queue* self); int queue_empty(struct Queue* self); int queue_put(struct Queue* self, void* data); void* queue_get(struct Queue* self); #endif
queue.c
#include "queue.h" #include <stdlib.h> #include <assert.h> int queue_init(struct Queue* self) { if(self == NULL) return -1; else { self->head = NULL; self->tail = NULL; } return 0; } int queue_empty(struct Queue* self) { return self->head == NULL; } int queue_put(struct Queue* self, void* data) { assert(self != NULL && data != NULL); struct Queue_node *newnode = (struct Queue_node*)malloc(sizeof(Queue_node)); if(newnode == NULL) return -1; else { newnode->data = data; newnode->next = NULL; if(self->head == NULL) { self->head = newnode; self->tail = newnode; } else { self->tail->next = newnode; self->tail = newnode; } return 0; } } void* queue_get(struct Queue* self) { void* data = NULL; if(queue_empty(self) == 1) return NULL; else { data = self->head->data; struct Queue_node* next = self->head->next; free(self->head); self->head=next; return data; } }
queue_test.c
#include "queue.h" #include <stdio.h> #include <stdlib.h> #include <time.h> int test_queue() { struct Queue queue; int ret = queue_init(&queue); if(ret < 0) { fprintf(stderr,"queue init failed\n"); return -1; } int data_array[10] = {0}; int i = 0; srand(time(NULL)); while(i<10) { data_array[i] = rand()%100; fprintf(stdout,"%d\t",data_array[i]); ret = queue_put(&queue,&data_array[i]); if(ret < 0) { fprintf(stderr,"put failed\n"); return -2; } i++; } fprintf(stdout,"\n"); int *p; while(queue_empty(&queue)==0) { p =(int*) queue_get(&queue); fprintf(stdout,"%d\t" ,*p); } fprintf(stdout,"\n"); return 0; } int main() { test_queue(); return 0; }
相关文章推荐
- 数据结构之顺序队列(循环队列)
- 数据结构(Java)--栈和队列
- 数据结构-队列
- 数据结构实验之队列一:排队买饭
- 数据结构之队列
- 数据结构实验之队列一:排队买饭
- 数据结构之队列实例
- 面向数据c++数据结构之基本数据结构(队列)--【美】Jan Harrington 陈博译
- 第六周--数据结构之自建算法库之链式队列
- 数据结构与算法 -- 队列 ADT
- (编程训练)再回首,数据结构——入队列、出队列操作
- 数据结构之循环队列
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 看数据结构写代码(15)链式队列的实现(总结篇)
- 数据结构(三)——双链表、链式栈、链式队列 及实现
- 数据结构(七)——队列
- 数据结构——队列常考知识点
- 【NOIp复习】数据结构之栈、队列和二叉树
- 数据结构之栈和队列
- Java数据结构与算法解析(三)——队列与背包