linkedlist(c语言_简单实现)

 1 #include<stdlib.h>

 2 typedef char Ele ;

 3 

 4 typedef struct node{

 5     Ele e;

 6     struct node *next;

 7 }lnode,*list;

 8 

 9 void get(Ele);

10 

11 //构造链表

12 list createlist(int n){

13     list l = NULL;

14     lnode *p,*r=NULL;

15     Ele e;

16     int i;

17     for(i=0;i<n;i++){

18         get(e);

19         p = (lnode *)malloc(sizeof(lnode));

20         p->e=e;

21         //构造首元素

22         if(!list){

23             l->e=p;

24         }else{

25             r->next=p;

26         }

27         r=p;

28     }

29     return l;

30 }

31 

32 //插入节点

33 void insertList(list list,lnode *q,Ele e){

34         lnode *p = (lnode *)malloc(sizeof(lnode));

35         p->e=e;

36         if(!list){

37             list->next=p;

38             p->next=NULL;

39         }else{

40             //将后一个节点赋值给p.next,前一个节点的下一个节点赋值给p

41             p->next=q->next;

42             q->next=p;

43         }

44 }

45 

46 //删除节点

47 void delNode(list l,lnode *q){

48     if(l==q){

49         l=q->next;

50     }else{

51         list temp = list;

52         while((temp=temp->next)!=q && temp!=NULL){

53         }

54         temp->next=q->next;

55         free(q);

56     }

57 }

58 

59 //销毁链表

60 void destorylist(list list){

61     lnode *p,*q;

62     p=list;

63     while(p){

64         q=p->next;

65         free(p);

66         p=q;

67     }

68     list=NULL;

69 }

 

你可能感兴趣的:(LinkedList)