删除链表中的重复的元素

原创 2015年07月07日 10:43:00

思想:
首先,创建一个非降序的链表(每次输入的数据不小于前者)
其次,遍历链表,只保留相同元素中的一个。

#include <stdio.h>
#include <stdlib.h>
typedef struct List
{
     struct List *next;
     int item;
}List,*link;
link init();
link orderinsert();  //创建一个非降序的链表
link LinkRepDel(link );
void show(link );

int main()
{
    List *p,*q;
    printf("Creat non-descending link:\n");
    p = orderinsert();
    show(p);
    printf("The new link:\n");
    q = LinkRepDel(p);
    show(q);
    return 0;
}

link init()
{
    List *st = malloc(sizeof(st));
    if(st == NULL)
        printf("failure to apply for memory!");
    st->next = NULL;
    return st;
}

link orderinsert()
{
    List *head,*st = init();
    head = st;
    int x;
    scanf("%d",&x);
    st->item = x;
    while(scanf("%d",&x) != EOF)
        if(x < st->item)           //此条件保证每次输入的数据不小于前者
            continue;
        else
        {
                List *p = malloc(sizeof(*p));
                p->item = x;
                st->next = p;
                p->next = NULL;
                st = p;
        }
    return head;
}
link LinkRepDel(link st)
{
    List *p,*q ,*head;
    p = st;
    head = p;
    q = st->next;
    for(;q->next != NULL;)
    {
        while(p->item == q->item)
            q = q->next;
        p = p->next;
        p->item = q->item;
        q = q->next;
    }
    p->next = NULL;
    return head;
}

void show(link st)
{
    int N = 0;
    do
    {
         printf("%3d",st->item);
         st = st->next;
         N++;
    } while(st != NULL);
    printf("\n");
    printf("The size of the link is:%d\n",N);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

删除单链表的重复元素

  • 2012-12-29 09:03
  • 411B
  • 下载

删除链表中的重复元素II

给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->null 给出 1->1->1->...

题目:删除排序链表中的重复元素

 给定一个排序链表,删除所有重复的元素每个元素只留下一个。 您在真实的面试中是否遇到过这个题? Yes 哪家公司问你的这个题? Airbnb Alibaba Amazo...

《数据结构与算法——C语言描述》答案 3.16 删除链表中的重复元素

转载请注明出处:http://blog.csdn.net/xdz78 #include #include /* 测试用例: 10 1 1 2 2 3 3 4 4 5 5 */ //3.16 ...
  • xdz78
  • xdz78
  • 2015-05-26 02:41
  • 408

单链表中重复元素的删除

数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复...

【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】

【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Give...

LintCode 删除排序链表中的重复元素

样例 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null 方法一:很容易就...

13.删除单链表中重复的元素

思路: 使用哈希表。 从头扫描,将出现过的节点存入哈希表中。 如果元素已经在哈希表中出现过则删除,没有则存入。 注意: 删除时需要知道前一节点。 我使用的链表中存储的是char...

利用单链表删除重复元素

****前面一篇介绍了用顺序表删除重复元素,那用单链表是不是也能奏效呢?下面用单链表删除重复元素。**** #include using namespace std; typedef int Ele...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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