数据结构实验之链表七:单链表中重复元素的删除 sdutoj2122

原创 2016年07月27日 11:02:49


数据结构实验之链表七:单链表中重复元素的删除

Time Limit: 1000MS Memory limit: 65536K

题目描述

按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。

输入

第一行输入元素个数n;
第二行输入n个整数。

输出

第一行输出初始链表元素个数;
第二行输出按照逆位序所建立的初始链表;
第三行输出删除重复元素后的单链表元素个数;
第四行输出删除重复元素后的单链表。

示例输入

10
21 30 14 55 32 63 11 30 55 30

示例输出

10
30 55 30 11 63 32 55 14 30 21
7
30 55 11 63 32 14 21

///注意格式控制,删除后节点的移动

#include <iostream>
#include <stdlib.h>
using namespace std;

struct f
{
    int data;
    struct f *next;
}*a,*p,*tail,*head;

int main()
{
    int n,i;
    cin>>n;
    head=new f;
    p=new f;
    cin>>p->data;
    p->next=NULL;
    tail=p;
    for (i=2; i<=n; i++)
    {
        p=new f;
        cin>>p->data;
        head->next=p;
        p->next=tail;
        tail=p;
    }///逆序建立链表

    cout<<n<<endl;
    tail=head->next;
    while (tail)
    {
        cout<<tail->data;
        if (tail->next!=NULL)
        {
            cout<<" ";
        }
        tail=tail->next;
    }


    a=head->next;
    while (a)/// 从第一个开始 从其下一个判断是否重复
    {
        tail=a;
        p=a->next;
        while (p)
        {
            if (a->data == p->data)
            {
                tail->next=p->next;///delete p
                n--;
            }
            else
            {
                tail=tail->next;///注意节点的移动
            }
            p=p->next;
        }
        a=a->next;
    }

    cout<<endl<<n<<endl;

    tail=head->next;
    while (tail)
    {
        cout<<tail->data;
        if (tail->next!=NULL)
        {
            cout<<" ";
        }
        tail=tail->next;
    }

    return 0;
}




版权声明:有错误麻烦赐教,感激不尽~~~(转载留言哦~)

数据结构实验之链表七:单链表中重复元素的删除

题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。 输入 第一行输入元素个数n;  第二行输入n个整数。 输出 第一...
  • a1265262132
  • a1265262132
  • 2016年08月06日 10:30
  • 348

删除单链表中的重复节点(删除多余项)

题目:如何删除单链表中的重复节点(即保证每个元素只出现一次,删除多余的,且后来出现的元素)。 一个没有排序的单链表,如 list = {a, 1, x, b, e, f, f, e, a, g, h...
  • cyuyanenen
  • cyuyanenen
  • 2016年06月20日 13:46
  • 9412

数据结构示例之单链表删除元素

以下是”链表删除元素“的简单示例: 1. 用c语言实现的版本 #include #include typedef char datatype; typedef struct node{ ...
  • chinawangfei
  • chinawangfei
  • 2016年10月30日 18:24
  • 1242

数据结构实验之链表七:单链表中重复元素的删除

数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 按照数据输入的...
  • Godsight
  • Godsight
  • 2016年05月16日 22:13
  • 868

从链表中删除重复数据(三种方法)

思路一: 遍历链表,把遍历的值存储到一个Hashtable中,在遍历过程中,若当前访问的值在Hashtable中已经存在,则说明这个数据是重复的,因此就可以删除。 优点:时间复杂度较低O(n) ...
  • IFollowRivers
  • IFollowRivers
  • 2017年04月13日 19:52
  • 1852

数据结构实验报告单链表的基本操作

错误1 public void add(int idx,AnyType x){ Node newNode=new Node(x); if(headNode==null||idx==0){ newNod...
  • moonlululu
  • moonlululu
  • 2016年02月15日 16:57
  • 1485

java数据结构实验数据结构主要内容复习

**实验一、单链表的基本操作 山东建筑大学网络工程121班马琳源码都是自己所做,只供学习用, 一、实验目的 1、掌握线性链表的操作特点,即指针是逻辑关系的映像。 2、掌握动态产生单链表的方法。...
  • u011488009
  • u011488009
  • 2016年01月03日 18:54
  • 565

【链表】C++删除链表中重复的结点

题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 注意要删除的是所...
  • yebanxin
  • yebanxin
  • 2016年07月16日 18:36
  • 1750

去除已排序链表中的重复元素

题目描述 给定一个已排序的单链表,去除单链表中的重复元素,只保留一个重复的元素,并且返回新的单链表。 例如: 给出1->1->2,你的函数调用之后必须返回1->2。 输入 一个已排序的单链表,例如1...
  • u014717036
  • u014717036
  • 2016年09月17日 17:50
  • 1086

【链表】删除链表中的重复元素

题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 ...
  • u012351768
  • u012351768
  • 2016年10月10日 10:34
  • 819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构实验之链表七:单链表中重复元素的删除 sdutoj2122
举报原因:
原因补充:

(最多只允许输入30个字)