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

函数题:链表去重

Luz2年前 (2022-11-12)题库424
要求实现函数,将带头结点的单链表中的在后面出现的重复元素删去。

### 函数接口定义:
c++
void deleteSame(LinkList La);

其中参数 La是待逆置的删除重复元素的链表,链表头指针为head,结点指针域为next,数据域为data。

### 裁判测试程序样例:
c++
#include<iostream>
using namespace std;

typedef int ElemType;

struct LNode {
ElemType data; // 数据域
LNode* next; // 指针域
};

struct LinkList {
LNode *head; // 头指针(带头结点)
void Create(int n); // 建立含n个结点的单链表
void Traverse(); // 遍历,并输出内容
};

void deleteSame(LinkList La) ;

// 创建顺序链表,调用逆置函数实现就地逆置,最后遍历链表输出各结点的数据域的值

int main() {
int n;
while(cin>>n) {
LinkList La;
La.Create(n);
deleteSame(La);
La.Traverse();
}

return 0;
}

void LinkList::Create(int n) { // 建立带头结点的单链表
head=new LNode;
head->next=NULL; // 先建立一个带头结点的单链表
LNode *q=head; // 尾指针
for (int i=0; i<n; i++) {
LNode*p=new LNode;
cin>>p->data; // 输入元素值
p->next=NULL;
q->next=p; // 链接到尾指针q之后
q=p;
}
}

void LinkList::Traverse() { // 遍历链表
LNode* p=head->next;
int cnt=0;
while (p) {
cnt++;
if (cnt>1) cout << " ";
cout<<p->data;
p=p->next;
}
cout << endl;
}


### 输入样例:

in
6 1 2 3 1 2 4
10 1 2 3 4 4 4 1 5 1 1


### 输出样例:

out
1 2 3 4
1 2 3 4 5






答案:若无答案欢迎评论

发表评论

访客

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