#include<iostream>
using namespace std;
//根据一个递增的整数序列构造有序单链表,删除其中的重复元素
struct node{
int data;
node *next;
};
node * Create(int a[],int n){
node *head=new node;
node *q;
for(int i=0;i<n;i++){
node *p=new node;
if(i==0)
head->next=p;
else
q->next=p;
p->data=a[i];
q=p;
}
return head;
}
void DelSame(node *L)
{
node* p = L;
if (p->next)//只有一个直接结束
p = p->next;
else
return;
node* q = p->next;
node *tmp;
while (p && q)//递增若有重复一定是连续的
{
if (p->data == q->data)
{
tmp = q;
q = q->next;
p->next = q;
delete tmp;
}
else
{
p = p->next;
q = q->next;
}
}
while(L)
{
printf("%3d",L->next->data);
L= L->next;
}
}
int main(){
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
node *head=Create(a,n);//建立带头结点单链表
DelSame(head);//去重复元素
}
递增单链表去重复元素
最新推荐文章于 2023-07-21 20:28:28 发布