#include <stdio.h>
#include <stdlib.h>
typedef struct lnode //定义链表
{
int data;
struct lnode *next;
}lnode,*linklist;
void createfifo(linklist &l,int n) //创建先进先出函数
{
int i;
linklist p,q;
l=(linklist)malloc(sizeof(lnode));
q=l;
for(i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
q->next=p;
q=p;
}
q->next=NULL;
}
void print(linklist l) //输出函数
{
linklist p;
p=l->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void sort(linklist &l) //排序函数
{
linklist p,q,r;
int t;
p=l->next;
while(p->next!=NULL)
{
q=l->next;
while(q->next!=NULL)
{
r=q->next;
while(q->data>r->data)
{
t=q->data;
q->data=r->data;
r->data=t;
}
q=q->next;
}
p=p->next;
}
}
void deletechongfu(linklist &l) //删除重复结点函数
{
linklist p,q;
p=l->next->next;
q=l->next;
while(p)
{
if(p->data==q->data)
{
q->next=p->next; //删除p结点
p=p->next;
}
else
{
q->next=p;
q=p;
}
}
}
void main() //主函数
{
int n;
linklist l;
printf("请输入链表元素个数:\n");
scanf("%d",&n);
printf("请输入元素:\n");
createfifo(l,n);
sort(l);
deletechongfu(l);
printf("删除重复元素之后的链表为:\n");
print(l);
printf("\n");
}