数据结构上机测试2-2:单链表操作B

简介: 数据结构上机测试2-2:单链表操作B

数据结构上机测试2-2:单链表操作B

Time Limit: 1000 ms Memory Limit: 65536 KiB

SubmitStatisticDiscuss

Problem Description

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

Input

第一行输入元素个数n;

第二行输入n个整数。

Output

第一行输出初始链表元素个数;

第二行输出按照逆位序所建立的初始链表;

第三行输出删除重复元素后的单链表元素个数;

第四行输出删除重复元素后的单链表。

Sample Input

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node *next;
};
int main()
{
    struct node *head, *p, *q;
    head = (struct node *)malloc(sizeof(struct node));
    head->next = NULL;
    int n, i;
    scanf("%d", &n);
    for(i = 1; i <= n; i++)
    {
        p = (struct node *)malloc(sizeof(struct node));
        scanf("%d", &p->data);
        p->next = head->next;
        head->next = p;
    }
    printf("%d\n", n);
    for(p = head->next; p != NULL; p = p->next)
    {
        if(p->next == NULL)
        {
            printf("%d\n", p->data);
        }
        else
        {
            printf("%d ", p->data);
        }
    }
    for(p = head->next; p->next != NULL;)
    {
        for(q = p; q->next != NULL;)
        {
            if(q->next->data == p->data)
            {
                q->next = q->next->next;
                n--;
            }
            else
            {
                if(q->next != NULL)
                {
                    q = q->next;
                }
            }
        }
        if(p ->next!= NULL)
        {
            p=p->next;
        }
    }
    printf("%d\n", n);
    for(q = head->next; q != NULL; q = q->next)
    {
        if(q->next == NULL)
        {
            printf("%d\n", q->data);
        }
        else
        {
            printf("%d ", q->data);
        }
    }
    return 0;
}

10

21 30 14 55 32 63 11 30 55 30

Sample Output

10

30 55 30 11 63 32 55 14 30 21

7

30 55 11 63 32 14 21

Hint

Source

 


相关文章
【数据结构】单链表(长期维护)(1)
【数据结构】单链表(长期维护)(1)
137 0
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
327 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
597 1
java数据结构,线性表链式存储(单链表)的实现
文章讲解了单链表的基本概念和Java实现,包括头指针、尾节点和节点结构。提供了实现代码,包括数据结构、接口定义和具体实现类。通过测试代码演示了单链表的基本操作,如添加、删除、更新和查找元素,并总结了操作的时间复杂度。
java数据结构,线性表链式存储(单链表)的实现
|
存储
[数据结构] -- 单链表
[数据结构] -- 单链表
154 1
【数据结构】——单链表实现
【数据结构】——单链表实现
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
331 1
|
存储
数据结构2——单链表
数据结构2——单链表
161 1
|
存储
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(一)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
250 1
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
3178 6

热门文章

最新文章

下一篇
开通oss服务