-->
当前位置:首页 > 题库 > 正文内容

函数题:单链表去重*

Luz3年前 (2022-06-12)题库717
已知单链表的结点结构定义如下:

c
typedef struct _NODE_
{
int data;
struct _NODE_ *next;
} NODE;


说明:data 为数据域。next 为指针域,指示后继结点。

请编写函数,删除带附加头结点的单链表中重复的数据结点。

#### 函数原型

c
void Unique(NODE *head);


说明:参数 head 为单链表的头指针,函数将对单链表作去重处理:每个数据结点只保留第 1 个,后面与之重复的数据结点都被删去。

#### 裁判程序

c
int main()
{
NODE *h;
Create(&h);
Input(h);
Unique(h);
Output(h);
putchar('\n');
Destroy(&h);
return 0;
}


说明:Create 函数用于创建链表,Destroy 函数用于销毁链表。Input 函数用于输入链表:首先输入结点数,然后输入这些数据元素。Output 函数用于输出单链表,数据元素之间以空格间隔。

#### 输入样例
in
16
28 47 52 28 36 47 52 47 28 28 95 47 36 28 47 95


#### 输出样例
out
28 47 52 36 95



要求:时间复杂度为 $$O(n^2)$$,空间复杂度为 $$O(1)$$。






答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。