TKeyI 2016-12-06 13:14 采纳率: 0%
浏览 1627

大一C++题目,这个一看就好难啊

题目描述
设有说明语句:

struct List

{ int data ; List * next ;

} ;

 List *head;

head是有序单向链表的头指针。请编写函数:

 void Count( List * head );

计算并输出链表数据相同值的结点及个数。例如,若数据序列为:

2 3 3 3 4 5 5 6 6 6 6 7 8 9 9

则输出结果:

data number

3 3

5 2

6 4

9 2

输入
多组测试样例,每组输入一行。行末元素为-1表示该组测试样例输入结束。

最后一行单独输入一个-1表示测试结束

输出
输出链表数据相同的结点及个数,结点值与个数之间用空格隔开

样例输入
0 9 4 8 8 2 4 5 5 1 7 1 1 5 -1
1 4 2 3 2 2 1 6 8 5 7 6 1 8 9 2 -1
-1

样例输出
4 2
8 2
5 3
1 3
1 3
2 4
6 2
8 2

提示

输出的值的顺序应遵循输入的顺序。

  • 写回答

1条回答 默认 最新

  • 凝视深空 2016-12-06 14:54
    关注
     #include<iostream>
    using namespace std;
    
    typedef struct List{
        int data;
        struct List *next;
    }List;
    
    List *create()
    {
        List *head,*p,*q;
        head=new List;
        head->next=NULL;
        p=head;
        cin>>p->data;
        while(p->data!=-1)
        {
            q=p;
            p=new List;
            q->next=p;
            p->next=NULL;
            cin>>p->data;
        }
        return head;
    }
    
    int Count(List *head)
    {
        List *p,*q;
        p=head;
        q=p->next;
        int cnt=1;
        while(p->data!=-1)
            {
                if(p->data==q->data)
                    cnt++;
                else{
                    cout<<p->data<<" "<<cnt<<endl;
                    cnt=1;
                    p=q;
                }
                q=q->next;
            }
    }
    
    int main()
    {
            List *head=create();
            Count(head);
            return 0;
    }
    

    写的是个单组输入的情况,具体可以自己拓展成多组输入的

    评论

报告相同问题?

悬赏问题

  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏