#include <stdio.h>
#include <stdlib.h>#include <string.h>struct single_link
{ int data; struct single_link *next;};int main(void)
{ struct single_link *head=NULL,*tail=NULL,*tmp=NULL,*i_d_tmp=NULL; int i=0,j=0; for(i=0;i<5;i++) { tmp=(struct single_link *)malloc(sizeof(struct single_link)); tmp->data=i+1; tmp->next =NULL; if(head ==NULL) head = tmp; else tail->next =tmp; tail=tmp; } for(tmp=head;tmp;tmp=tmp->next) printf("init data = %d\n",tmp->data); i_d_tmp=(struct single_link *)malloc(sizeof(struct single_link));/*create a new node*/ i_d_tmp->data=6; i_d_tmp->next =NULL; for(tmp=head;tmp;tmp=tmp->next) { if(tmp->data>=3&&tmp->data<5) { i_d_tmp->next=tmp->next;/*add the position node*/ tmp->next=i_d_tmp; break; } } for(tmp=head;tmp;tmp=tmp->next) printf("after add data=%d\n",tmp->data); tmp=head; for(i=0;i<6;i++) { if(tmp->data==4) break; else tmp=tmp->next; } printf("delect pos=%d\n",i); struct single_link *tmp_save=NULL; for(tmp=head;tmp;tmp=tmp->next) { if(j==i) { tmp_save->next=tmp->next; free(tmp); tmp = NULL; break; } if(j==(i-1)) tmp_save=tmp; j++; } for(tmp=head;tmp;tmp=tmp->next) printf("after delect data=%d\n",tmp->data); tmp=head; for(;;) { if(tmp->next == NULL) { tmp->next = head; break; } else tmp++; } i=0; for(tmp=head;tmp;tmp=tmp->next) {if(tmp == head)
{ i++; if(i>=5) break; printf("\n\n"); } printf("circle link data=%d\n",tmp->data); }}/*linux 2.6下gcc single.c,生成a.out,执行a.out*/