資料結構之__棧
阿新 • • 發佈:2020-11-02
程式碼非常簡單,直接程式碼stackg.h
1 #ifndef stackg_h 2 #define stackg_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 push(List *, DataType); 22 void pop(List *); 23 Node *getTop(List *); 24 int getLength(List *); 25 void dispList(List *); 26 27 #endif
對應的實現檔案stackg.c
1 #include "stackg.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 push(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->tail = node; 20 }else{ 21 node->next = list->head; 22 //3、插入節點 23 } 24 list->head = node; 25 26 return; 27 } 28 29 void pop(List *list){ 30 list->head = list->head->next; 31 32 return; 33 } 34 35 Node *getTop(List *list){ 36 Node *node = (Node *)malloc(sizeof(Node)); 37 node = list->head; 38 39 return node;; 40 } 41 42 int getLength(List *list){ 43 Node *node = (Node*)malloc(sizeof(Node)); 44 node = list->head; 45 int i = 0; 46 while(node != NULL){ 47 node = node->next; 48 i++; 49 } 50 51 return i; 52 } 53 54 void dispList(List *list){ 55 Node *node = (Node *)malloc(sizeof(Node)); 56 node = list->head; 57 int i = 0; 58 while(node != NULL){ 59 printf("the %dth node: %d\n", i + 1, node->data); 60 node = node->next; 61 i++; 62 } 63 printf("display finished\n"); 64 65 return; 66 }
測試檔案testStackg.c
1 #include "stackg.h" 2 3 int main(int argc, char **argv) 4 { 5 List *list = (List *)malloc(sizeof(List)); 6 initList(list); 7 push(list, 4); 8 push(list, 6); 9 push(list, 8); 10 push(list, 10); 11 dispList(list); 12 Node *tmp = getTop(list); 13 printf("getTop result: %d\n", tmp->data); 14 pop(list); 15 dispList(list); 16 pop(list); 17 dispList(list); 18 printf("the list: %d\n", getLength(list)); 19 20 return 0; 21 }
直接執行即可,win10下linux子系統ubuntu18.04