数据结构之__队列
老样子,代码就是一切,首先queueg.h
1 #ifndef queueg_h 2 #define queueg_h 3 4 #include <stdio.h> 5 #include <stdlib.h> 6 7 typedef int DataType; 8 9 typedef struct node_{ 10 DataType data; 11 struct node_ *next; 12 } Node; 13 14 typedef struct list_{ 15 Node *head; 16 Node *tail; 17 Node *current; 18 } List; 19 20 void initList(List *); 21 void inQueue(List *, DataType); 22 void outQueue(List *); 23 Node *frontQueue(List *); 24 int getLength(List *); 25 void dispList(List *); 26 27 #endif
接着queueg.c
1 #include "queueg.h" 2 3 void initList(List *list){ 4 list->head = NULL; 5 list->tail = NULL; 6 list->current = NULL; 7 8 return; 9 } 10 11 void inQueue(List *list, DataType data){ 12 //1、创建一个节点 13 Node *node = (Node *)malloc(sizeof(Node)); 14 node->data = data; 15 node->next = NULL; 16 17 //2、插入节点准备 18 if(list->head == NULL){ 19 list->head = node; 20 }else{ 21 //node->next = list->head; 22 list->tail->next = node; 23 //3、插入节点 24 } 25 list->tail = node; 26 27 return; 28 } 29 30 void outQueue(List *list){ 31 list->head = list->head->next; 32 33 return; 34 } 35 36 Node *frontQueue(List *list){ 37 Node *node = (Node *)malloc(sizeof(Node)); 38 node = list->head; 39 40 return node;; 41 } 42 43 int getLength(List *list){ 44 Node *node = (Node*)malloc(sizeof(Node)); 45 node = list->head; 46 int i = 0; 47 while(node != NULL){ 48 node = node->next; 49 i++; 50 } 51 52 return i; 53 } 54 55 void dispList(List *list){ 56 Node *node = (Node *)malloc(sizeof(Node)); 57 node = list->head; 58 int i = 0; 59 while(node != NULL){ 60 printf("the %dth node: %d\n", i + 1, node->data); 61 node = node->next; 62 i++; 63 } 64 printf("display finished\n"); 65 66 return; 67 }
最后,测试代码testQueue.c
1 #include "queueg.h" 2 3 int main(int argc, char **argv) 4 { 5 List *list = (List *)malloc(sizeof(List)); 6 initList(list); 7 inQueue(list, 4); 8 inQueue(list, 6); 9 inQueue(list, 8); 10 inQueue(list, 10); 11 dispList(list); 12 Node *tmp = frontQueue(list); 13 printf("getTop result: %d\n", tmp->data); 14 outQueue(list); 15 dispList(list); 16 outQueue(list); 17 dispList(list); 18 printf("the list: %d\n", getLength(list)); 19 20 return 0; 21 }
整体还是比较简单,主要是便于学生从表的角度看待栈和队列了
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。