链表是一种非常重要的数据结构,比起数组来虽然操作繁琐,查找效率也不如数组效率高,但在进行插入删除操作时,链表具有数组无法比拟的效率,下面的代码是链表的实现
#include<stdio.h>#include<stdlib.h>#include<time.h>#define N 100
typedef struct node{ int item; struct node * next;}*link;
link NODE(int item, link next){ link p = malloc(sizeof *p);
p->item = item; p->next = next;
return p;}
void init_list(link head){ int i; srand(time(NULL)); for(i = 0; i < N; i++) head->next = NODE(rand()0, head->next);}
void delete(link head){ link p = head->next, front = head; while(p != NULL) { if(p->item >= 30 && p->item <= 70) { front->next = p->next; free(p); p = front; }/* else { front = p; p = p->next; }*/ front = p; p = p->next; }}
void show_list(link head){ head = head->next; while(head != NULL) { printf("%d ", head->item); head = head->next; } printf("/n");}
int main(void){ link head = NODE(-1, NULL); init_list(head); show_list(head); printf("delete:/n"); delete(head); show_list(head); return 0;}