#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int value;
struct Node *next;
}Node;
Node *getnewnode(int val){
Node *p=(Node *)malloc(sizeof(Node));
p->value=val;
p->next=NULL;
return p;
}
void removeNode(Node *head){
//快慢指针定向移动赋值法
if(head==NULL||head->next==NULL) return ;
//这行代码检查链表是否为空或只有一个节点。如果是的话,说明链表中没有重复元素,直接返回。
Node* slow = head;
Node* fast = head->next;
while (fast != NULL) {
if (slow->value != fast->value) {
slow->next = fast;
slow = slow->next;
}
fast = fast->next;
}
slow->next = NULL;
return ;
}
void insertNode(Node **head,int val){
Node *newnode=getnewnode(val);
if(*head==NULL){
*head=newnode;
return ;
}
Node *p=*head;//赋初值
while(p->next){
p=p->next;
}
p->next=newnode;
return ;
}
void clear(Node *head){
if(head==NULL) return ;
for(Node *p=head,*q;p;p=q){
q=p->next;
free(p);
}
return ;
}
int main(void){
Node *head=NULL;
int num;
scanf("%d",&num);
int a[101];
for(int i=0;i<num;i++){
scanf("%d",&a[i]);
insertNode(&head,a[i]);
}
removeNode(head);
Node *cur=head;
printf("Head");
while(cur!=NULL){
printf("->%d",cur->value);
cur=cur->next;
}
return 0;
}