题目要求
删除单向链表中的重复结点,如果链表中存在重复结点
(除next指针外的其它数据成员的值相同)时,保留离链首最近的结点。
该链表中固定只有8个元素, 输入是八个整数。
注意看链表的创建函数
Node * createList(int a[], int len)
{
Node *head = NULL;
if(len<1)
return head;
for(int i=0;i<len;i++)
{
Node *tmp = new Node;
tmp->num = a[i];
tmp->next = head;
head = tmp;
}
return head;
}
输入输出样例:1组
#1
样例输入:
2 6 4 2 7 9 5 12
样例输出:
12 5 9 7 2 4 6
代码示例
#include <iostream>
#include <stdlib.h>
using namespace std;
struct Node{
int num;
Node* next;
};
Node * createList(int a[], int len)
{
Node *head = NULL;
if(len<1)
return head;
for(int i=0;i<len;i++)
{
Node *tmp = new Node;
tmp->num = a[i];
tmp->next = head;
head = tmp;
}
return head;
}
void print(Node* addr){
for (Node* pi=addr;pi!=NULL;pi=pi->next){
cout<<pi->num<<" ";
}
}
Node* del(Node* head){
Node *p,*q,*r;
p = head;
while(p != NULL)
{
q = p;
while(q->next != NULL)
{
if(q->next->num == p->num)
{
r = q->next;
q->next = r->next;
free(r);
}
else
q = q->next;
}
p = p->next;
}
return head;
}
int main()
{
int a[8];
for(int i=0;i<8;i++){
cin>>a[i];
}
Node* h=createList(a,8);
del(h);
print(h);
return 0;
}
版权声明:本文为qq_37301470原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。