Problem A: 删除相同元素(线性表)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 489 Solved: 344
[ Submit][ Status][ Web Board]
Description
(线性表)在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。
Input
输入长度:6
输入数据:2 3 4 5 5 7
Output
2 3 4 5 7
Sample Input
6
8 9 10 11 22 22
Sample Output
8 9 10 11 22
HINT
代码实现:
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;
void CreateListR(LinkList *&L,int a[],int n)
{
LinkList *s,*r;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(int i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void dels(LinkList *&L)
{
LinkList *p=L->next,*q;
while (p->next!=NULL)
{
if (p->data==p->next->data)
{
q=p->next;
p->next=q->next;
free(q);
}
else
p=p->next;
}
}
void ShowList(LinkList *L)
{
LinkList *p=L->next;
while(p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main()
{
LinkList *s1;
int n,i;
int a[100];
cin>>n;
for (i=0;i<n;i++)
{
cin>>a[i];
}
CreateListR(s1,a,n);
dels(s1);
ShowList(s1);
return 0;
}