list.c
来自「数据结构自己写的linux链表的实现」· C语言 代码 · 共 130 行
C
130 行
#include "list.h"#include <stdio.h>#include <malloc.h>#include <stdlib.h>//---------------search list------------------Slist *createslist(void){ Slist *sl; sl = malloc(sizeof(Slist)); sl->head = NULL; return sl;}void addsnode(Slist *sl, Node *node){ Snode *temp; Snode *snode; snode = malloc(sizeof(Snode)); snode->node = node; snode->next = NULL; if(sl->head == NULL) sl->head = snode; else { temp = sl->head; while(temp->next) { temp = temp->next; } temp->next = snode; }}void destoryslist(Slist *sl){ free(sl);}void printsnode(Slist *l, Print printdata){ Snode *temp; temp = l->head; while(temp != NULL) { printdata(temp->node); temp = temp->next; }}//---------------end search list------------------List *createlist(void){ List *l; l = malloc(sizeof(List)); l->head = NULL; return l;}void addnode(List *l, Node *datanode){ datanode->next = NULL; Node *temp; temp = l->head; if(l->head == NULL) { l->head = datanode; } else { while(temp->next != NULL) { temp = temp->next; } temp->next = datanode; }}void printnode(List *l, Print printdata){ Node *temp; temp = l->head; while(temp != NULL) { printdata(temp); temp = temp->next; }}void delnode(List *l, Cond con, Deldata del, int b){ Node *temp; Node *delbak; temp = l->head; while(temp->next) { if(con(temp->next, b)) { delbak = temp->next; temp->next = temp->next->next; del(delbak); } else temp = temp->next; } if(con(l->head, b)) { delbak = l->head; l->head = l->head->next; del(delbak); } }Slist *searchnode(List *l, Cond con, int b){ Slist *tl; tl = createslist(); Node *temp; temp = l->head; if(con(l->head, b)) { addsnode(tl, l->head); } while(temp->next) { if(con(temp->next, b)) { addsnode(tl, temp->next); } temp = temp->next; } return tl;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?