王道数据结构队列问题

img


假设循环单链表表示的队列长度为n,队头固定在链表尾,若只设头指针,则进队操作的时间复杂度为,为什么答案不是b啊

【相关推荐】



  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7691567
  • 这篇博客你也可以参考下:题目:请编写一个完整的程序,利用递归算法计算斐波那契数列的第N项,并输出
  • 除此之外, 这篇博客: 算法题:求一维数组中出现频率最高的数字中的 题目如下:一个一维整数数组,编程统计数组成员的出现频率,将出现频率最高的前N个数组成员输出来。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    以下为代码段:

    #include <iostream>
    
    #define N1 1000
    int b[N1] = { 0 };
    int max;
    int index = 0;
    int i, j, n;
    void top(int a[], int size, int N)
    {
        for (i = 0; i < size; i++)
        {
            for (j = 0; j < size; j++)
            {
                if (a[i] == a[j])
                {
                    b[i]++;
                }
            }
        }
        for (int i = 0; i < N; i++)
        {
            max = b[0];
            index = 0;
            for (j = 1; j < size; j++)
            {
                if (max < b[j])
                {
                    max = b[j];
                    index = j;
                }
            }
            printf("%d,%d\n", a[index], max);
            for (j = 0; j < size; j++)
            {
                if (max == b[j])
                {
                    b[j] = 0;
                }
            }
        }
    }
    int main()
    {
        int N = 2;
        int a[N1] = { 6,3,3,6,6,-2,3,7,3 };
        top(a, 9, N);
        return 0;
    }
    

    思路:先用for循环遍历数组,采用map的思路,每一个数组元素对应的数组b[],对应a[]相应位置,记录元素在数组a其他位置出现的次数,for循环结束就得到类似于map的一一对应于a的数组b,数组b记录的为数组a中元素出现的元素次数。第二步的思路是当遍历完频率最高的元素次数及元素值,就再用一个for循环置零数组b,然后继续遍历频率次之的元素。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^