1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef struct Node{
 4     int data;
 5     Node*next;
 6 }Node,*LinkList;
 7 CreateLinkList(LinkList*L)
 8 {
 9     int e,length;
10     Node*r,*t;
11     *L=(LinkList)malloc(sizeof(Node));
12     scanf("%d",&length);
13     scanf("%d",&e);
14     (*L)->data=e;
15     r=*L;
16     for(int i=1;i<length;i++)
17     {
18         scanf("%d",&e);
19         t=(LinkList)malloc(sizeof(Node));
20         t->data=e;
21         r->next=t;
22         r=t;
23     }
24     r->next=*L;    
25 }
26 SetHead(int n,LinkList*L)//此处应设为指针的地址 
27 {
28     for(int i=1;i<=n;i++)
29         *L=(*L)->next;    
30 }
31 Delete(int e,LinkList*L)
32 {
33     Node*ppre=*L,*pre=ppre->next,*t=pre->next;
34     while(t->data!=e)
35     {
36         ppre=pre;
37         pre=t;
38         t=t->next;
39     }
40     if(pre==*L)*L=(*L)->next;//要考虑删除结点为头指针的情况,不然会造成死循环 
41     ppre->next=t;
42 }
43 Order(LinkList L)
44 {
45     Node*t=L->next;
46     printf("%d ",L->data);
47     while(t!=L)
48     {
49         printf("%d ",t->data);
50         t=t->next;
51     }
52 }
53 int main()
54 {
55     LinkList L;
56     int n,e;
57     CreateLinkList(&L);
58     scanf("%d %d",&n,&e);
59     SetHead(n,&L);
60     Delete(e,&L);
61     Order(L);
62     return 0;
63     
64 }