Linux C單鏈表
阿新 • • 發佈:2018-11-22
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <unistd.h> #include <string.h> typedef struct node { char *deviceID; char *meteID; int value; struct node *next; }listnode,*linklist; linklist init_list(void) { linklist mylist = malloc(sizeof(listnode)); if(mylist != NULL) { mylist->next = NULL; } return mylist; } bool is_empty(linklist list) { return list->next == NULL; } linklist new_node(char *deviceID,char *meteID,int value) { linklist new = malloc(sizeof(listnode)); if (new != NULL) { new->deviceID = deviceID; new->meteID = meteID; new->value = value; new->next = NULL; } return new; } void insert_node(linklist list,linklist newNode) { if (list == NULL || newNode == NULL) return; newNode->next = list->next; list->next = newNode; } bool remove_node(linklist list,linklist delete) { if (is_empty(list)) return false; linklist p = list; while(p!=NULL && p->next != delete) { p = p->next; } if (p == NULL) return false; p->next = delete->next; delete->next = NULL; return true; } void moe_node(linklist list,linklist p,linklist anchor) { if (list == NULL || p == NULL || anchor == NULL) return; renove_node(list,p); insert_node(anchor,p); } void show(linklist list) { if (is_empty(list)) return ; linklist p = list->next; int i =0; while(p != NULL) { printf("deviceID:%s\n",p->deviceID); printf("meteID:%s\n",p->meteID); printf("value:%d\n",p->value); p = p->next; i++; } }