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

来源:互联网 发布:论文中的财务报表数据 编辑:程序博客网 时间:2024/05/20 01:11
  1. 题目描述

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

    输入

    第一行输入元素个数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

  2. #include<stdio.h>   
  3. #include<stdlib.h>   
  4. struct node   
  5. {   
  6.     int  date;   
  7.     struct node *next;   
  8. };   
  9. struct node *head,*p,*q,*tail;   
  10. int main()   
  11. {   
  12.     int n,t;   
  13.     scanf("%d",&n);   
  14.     t=n;   
  15.     head=(struct node*)malloc(sizeof(struct node)*1);   
  16.     head->next=NULL;   
  17.     while(n--)   
  18.     {   
  19.         if((p=(struct node*)malloc(sizeof(struct node)*1))==NULL)   
  20.             return 0;   
  21.         scanf("%d",&p->date);   
  22.         p->next=head->next;   
  23.         head->next=p;   
  24.     }   
  25.     printf("%d\n",t);   
  26.     q=head->next;   
  27.     while(q!=NULL)   
  28.     {   
  29.         printf("%d",q->date);   
  30.         if(q->next!=NULL)   
  31.             printf(" ");   
  32.         q=q->next;   
  33.     }   
  34.     printf("\n");   
  35.     q=head;   
  36.     while(q!=NULL)   
  37.     {   
  38.         tail=q;p=tail->next;   
  39.         while(p!=NULL)   
  40.         {   
  41.             if(q->date==p->date)   
  42.             {   
  43.                 tail->next=p->next;   
  44.                 t--;   
  45.             }   
  46.             else  
  47.                 {   
  48.   
  49.                 tail=tail->next;   
  50.             }   
  51.             p=p->next;   
  52.         }   
  53.         q=q->next;   
  54.     }   
  55.     printf("%d\n",t);   
  56.     q=head->next;   
  57.     while(q!=NULL)   
  58.     {   
  59.         printf("%d",q->date);   
  60.         if(q->next!=NULL)   
  61.             printf(" ");   
  62.         q=q->next;   
  63.     }   
  64.     printf("\n");   
  65.     return 0;   
  66. }   
0 0
原创粉丝点击