C++不会,只会CwithSTL
C语言版将就看吧
用数组标记重复元素(临时想不出更高明的办法)
照课本格式写的
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #include<string.h> 5 #define maxn 1000 6 typedef struct LNode 7 { 8 int data; 9 struct LNode *next; 10 }LNode, *LinkList; 11 int a[maxn];//桶 12 void CreateList_L(LinkList &L, int n) 13 { 14 LNode *p,*q; 15 L = (LinkList)malloc(sizeof(LNode)); 16 L -> next = NULL; 17 q = L; 18 for(int i = n; i > 0; --i) 19 { 20 p = (LinkList)malloc(sizeof(LNode)); 21 scanf("%d",&(p->data)); 22 p->next = NULL; 23 q->next = p; 24 q = q -> next; 25 } 26 }//构建链表 27 28 void DeleRepeat(LinkList &L) 29 { 30 memset(a,0,sizeof(a)); 31 LNode *p,*q; 32 p = L -> next; 33 q = L -> next; 34 a[p -> data] = 1; 35 if(p -> next != NULL) 36 { 37 p = p -> next; 38 } 39 else 40 { 41 return; 42 } 43 44 while(p!= NULL) 45 { 46 if(a[p -> data] == 0) 47 { 48 a[p -> data] = 1; 49 p = p -> next; 50 q = q -> next; 51 } 52 else 53 { 54 q -> next = p -> next; 55 p = p -> next; 56 } 57 } 58 }//删除重复元素 59 void Print(LinkList &L) 60 { 61 LNode *p = L -> next; 62 while(p != NULL) 63 { 64 printf("%d ", p -> data); 65 p = p -> next; 66 } 67 }//输出 68 int main() 69 { 70 int n; 71 printf("请输入你要输入的元素个数:"); 72 scanf("%d",&n); 73 LNode *L; 74 CreateList_L(L,n); 75 DeleRepeat(L); 76 Print(L); 77 system("pause"); 78 return 0; 79 }