⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhognshu.c

📁 用链表实现求一个无序的数组的的众数的程序
💻 C
字号:
#include<stdio.h>
typedef struct node
{
   int data;
   int num;
   struct node *next;
}list;
int lookup_same(list *H,int i);/* 查找是否有相同的元素 */
int lookup_max(list *H,int max);/* 查找出线次数最多的元素 */
int max;
int main(void)
{
    int a[]={1,3,3,4,6,5,3,2,1,4,6,7,8,9,5,3,5,5,5},i;
    list *H,*p,*n;
    H=p=(list*)malloc(sizeof(list));
    H->data=a[0];
    max=H->num=1;
    for(i=1;i<sizeof(a)/sizeof(int);i++)
    {
      if(H&&lookup_same(H,a[i]))/* 如果表非空并且a[i]不存在于表中则添加进去 */
      {
         if(!(n=(list*)malloc(sizeof(list))))
           return 0;
         n->num=0;
         n->data=a[i];
         n->num++;
         p->next=n;
         p=n;
      }
    }
    p->next=NULL;
    printf("出现次数最多的数是:%d,一共出线了:%d次\n",lookup_max(H,max),max);
    getch();
    return 0;
}
int lookup_same(list *H,int i)
{
    while(H)
    {
       if(H->data==i)/* 如果表中存在与a[i]相等的元素,则该元素计数器加一,并且和当前最大的次数比较 */
       {
         if(++H->num>max)
           max=H->num;
         return 0;
       }
       H=H->next;
    }
    return 1;
}
int lookup_max(list *H,int max)
{
    while(H)
    {
       if(H->num==max)
         return H->data;
       H=H->next;
    }
    return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -