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

📄 1835085_ac_419ms_1684k.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
 long number ;
 long no ;
 struct node *left, *right ;
} BITree ;
int mark;
BITree *head ;
void insertnode (long k)
{
 BITree *p, *np ;
if (head == NULL)
 {
  head = (BITree *) malloc (sizeof (BITree)) ;
  head->number = k ;
  head->no = 1 ;
  head->left = NULL ;
  head->right = NULL ;
  return ;
 }
 p = head ;
 while (1)
 {
  if (p->number == k)
  {
   p->no++ ;
   mark= 1 ;
   return ;
  }
if (k < p->number)
  {
   if (p->left)
    p = p->left ;
   else
   {
    np = (BITree *)malloc (sizeof (BITree)) ;
    np->number = k ;
    np->no = 1 ;
    np->left = NULL ;
    np->right = NULL ;
    p->left = np ;
    return ;
   }
  }
if (k > p->number)
  {
   if (p->right)
    p = p->right ;
   else
   {
    np = (BITree *)malloc (sizeof (BITree)) ;
    np->number = k ;
    np->no = 1 ;
    np->left = NULL ;
    np->right = NULL ;
    p->right = np ;
    return ;
   }
  }
 }
}
long getnum (char *str)
{
 long k ;
 int i ;
 k = 0 ;
 for (i = 0 ; str[i] ; i++)
 {
  switch (str[i])
  {
  case '0':
   k *= 10 ;
   break ;
case '1':
   k = k*10 + 1 ;
   break ;
case '2':
  case 'A':
  case 'B':
  case 'C':
   k = k*10 + 2 ;
   break ;
 case '3':
  case 'D':
  case 'E':
  case 'F':
   k = k*10 + 3 ;
   break ;
 case '4':
  case 'G':
  case 'H':
  case 'I':
   k = k*10 + 4 ;
   break ;
 case '5':
  case 'J':
  case 'K':
  case 'L':
   k = k*10 + 5 ;
   break ;
 case '6':
  case 'M':
  case 'N':
  case 'O':
   k = k*10 + 6 ;
   break ;
 case '7':
  case 'P':
  case 'R':
  case 'S':
   k = k*10 + 7 ;
   break ;

  case '8':
  case 'T':
  case 'U':
  case 'V':
   k = k*10 + 8 ;
   break ;
  case '9':
  case 'W':
  case 'X':
  case 'Y':
   k = k*10 + 9 ;
   break ;
  }
 }
 return k ;
}
void output (BITree *pp)
{
 if (!pp)
  return ;
 output (pp->left) ;
 if (pp->no != 1)
  printf ("%.3ld-%.4ld %ld\n", pp->number/10000, pp->number % 10000, pp->no) ;
 output (pp->right) ;
}
int main()
{
 long s ,m ;
 char str[50] ;
 BITree *p ;
 head = NULL ;
 mark= 0 ;
 scanf ("%ld", &s) ;
 for (m = 0 ; m < s ; m++)
 {    
    scanf("%s",str);
    insertnode(getnum(str)); 
 }
 if (!mark)
 {
  printf ("No duplicates.\n") ;
  return 0 ;
 }
  p = head ;
 output (p) ;
 return 0 ;
}

⌨️ 快捷键说明

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