2013-04-22
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 struct node 5 { 6 int num; 7 struct node *next; 8 }; 9 void creat(struct node **head) 10 { 11 *head = NULL; 12 } 13 void insert_node(struct node **head,struct node **newnode) //建立链表遍历 14 { 15 if(*head == NULL) 16 { 17 (*newnode)->next = NULL; 18 *head = *newnode; 19 } 20 else 21 { 22 (*newnode)->next = *head; 23 *head = *newnode; 24 } 25 } 26 27 void display( struct node **head) //显示脸表遍历 28 { 29 struct node *temp = *head; 30 while(temp != NULL) 31 { 32 printf("%d\t",temp->num); 33 temp = temp->next; 34 } 35 } 36 37 int insert_tail(struct node **head,struct node **newnode) //尾部插入 38 { 39 struct node *temp = *head; 40 if(*head == NULL) 41 { 42 (*newnode)->next =NULL; 43 *head = *newnode; 44 } 45 else 46 { 47 while(temp->next != NULL) 48 { 49 temp = temp->next; 50 } 51 temp->next = *newnode; 52 (*newnode)->next = NULL; 53 return 0; 54 } 55 56 } 57 58 int insert_mid( struct node **head , struct node **newnode , int num ) 59 { 60 struct node *temp = *head; 61 while(temp != NULL) 62 { 63 if(temp->num == num) 64 { 65 (*newnode)->next = temp->next; 66 temp->next = *newnode; 67 return 0; 68 } 69 temp = temp->next; 70 } 71 printf("not find %d",num); 72 73 } 74 75 int delete(struct node **head,int num) 76 { 77 if( (*head)->num == num ) //delete head 78 { 79 *head=(*head)->next; 80 return 0; 81 } 82 else 83 { 84 struct node *temp = *head; 85 struct node *ptr =NULL; 86 while(temp != NULL) 87 { 88 if(temp->num == num) 89 { 90 ptr->next = temp->next; 91 free(temp); 92 return 0; 93 }
ptr = temp; 95 temp = temp->next; 96 } 97 printf("not find %d ,delete fail !!!\n",num); 98 exit(1); 99 } 100 } 101 int main() 102 { 103 int i = 0; 104 struct node *head; 105 creat(&head); 106 struct node *newnode; 107 for(i = 0;i < 10;i++) 108 { 109 newnode = (struct node *)malloc(sizeof(struct node)); 110 newnode->num = i + 1; 111 insert_tail(&head,&newnode); 112 } 113 newnode = (struct node *)malloc(sizeof(struct node)); 114 newnode->num = 12; 115 //insert_mid(&head,&newnode,10); 116 delete(&head,'a'); 117 display(&head); 118 printf("\n"); 119 return 0; 120 }