目录
题目要求:
本题要求实现一个函数,实现删除单链表中值相同的多余元素,使得单链表每个元素的值是唯一的。(单链表中至少一个元素)
函数接口定义:
int Deletesame(LinkList &L)
解释接口参数:其中L
是用户传入的参数。 L
是指向单链表头结点的指针,单链表结点有两个成员,一个是data域,存放该结点的数据元素,不特别说明的话元素类型为整型,一个是next域 ,指向下一个结点;函数返回删除的个数,删除后的结果在L中表现出来。
裁判测试程序样例:
#include<iostream>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct node {
ElemType data;
struct node *next;
}LNode,*LinkList;
Status InitList_Lk(LinkList &L) ; // 单链表的初始化,已实现,不用再定义
void CreatList(LinkList &L,int n); //创建含有n个元素的单链表,已实现,不用再定义
void ViewList(LinkList L) ;//打印单链表,已实现,不用再定义
void Deletesame(LinkList &L); // 要实现的函数
int main()
{
LinkList L;
int n,c;
InitList_Lk(L);
cin >> n;
CreatList(L, n);
c=Deletesame(L);
if(n<10000)ViewList(L);
else cout<<"共删除了"<<c<<"个数据";
return 0;
}
输入样例:
在这里给出一组输入。例如:
10
34 56 12 5 7 55 78 12 12 6
输出样例:
在这里给出相应的输出。例如:
34 56 12 5 7 55 78 6
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/10/9
- 星期日早上8:00
- 运行时间有点长,达到205ms
随便写写的答案:
int Deletesame(LinkList &L)
{
LinkList p = L,q;
int num = 0;
while(p->next != NULL)
{
q = p;
q=q->next;
p=p->next;
while(q->next != NULL)
{
if(p->data != q->next->data)
{
q=q->next;
}
else
{
num++;
q->next=q->next->next;
}
}
}
return num;
}