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

来源:互联网 发布:excel怎么建立数据库 编辑:程序博客网 时间:2024/05/03 06:26

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

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

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

输入

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

输出

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

示例输入

1021 30 14 55 32 63 11 30 55 30

示例输出


1030 55 30 11 63 32 55 14 30 21730 55 11 63 32 14 21



怎么也学不会的链表。。
#include <iostream>#include <stdlib.h>using namespace std;int n;struct node{    int data;    struct node * next;};struct node * creat(){    struct node * head, * p;    head = (struct node * )malloc(sizeof(struct node));    head->next = NULL;    for(int i = 0; i < n; i++)    {        p = (struct node * )malloc(sizeof(struct node));        cin >> p->data;        p->next = head->next;        head->next = p;    }    return head;};void del(struct node * head){    struct node * p, * q, * t;    for(p = head->next; p != NULL; p = p->next)    {        t = p;        q = p->next;        while(q != NULL)        {            if(q->data == p->data)            {                t->next = q->next;                free(q);                n--;                q = t->next;            }            else            {                q = q->next;                t = t->next;            }        }    }}void show(struct node * head){    struct node * p;    p = head->next;    cout << n << endl;    while(p->next != NULL)    {        cout << p->data << " ";        p = p->next;    }    cout << p->data << endl;}int main(){    cin >> n;    struct node * head;    head = creat();    show(head);    del(head);    show(head);    return 0;}


0 0