函数题:单链表去重*
已知单链表的结点结构定义如下:
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)$$。
答案:若无答案欢迎评论
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)$$。
答案:若无答案欢迎评论