- 论坛徽章:
- 0
|
楼主是不是用C++习惯了,C语言格式和C++有点不一样哦,下面代码是我改过了,编译后没有错误,你对照一下是否符合你的意思。
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define Status int
typedef struct List
{
char *color;//颜色
int time;//颜色出现次数
struct List *next;//下一个
}List,*PList;
void AddNode(PList pl, char *color);
int Equals(char *src, char *dest);
void print(PList pl);
void AddNode(PList pl, char *color)
{
PList q,p;
if(! pl -> next)
{
pl -> time = 1;
pl -> color = color;
return;
}
q = pl;
while(q)
{
if (Equals(q -> color, color) == 0)
{
q -> time ++;
return;
}
q = q -> next;
}
p = (PList) malloc (sizeof(List));
p -> color = color;
p -> time = 1;
p -> next = pl;
pl = p;
}
int Equals(char *src, char *dest)
{
while (src && dest && (*src == *dest))
{
src ++;
dest ++;
}
if(!src)
{
return dest ? -1 : 0;
}
else
{
if (*src > *dest)
{
return 1;
}
else
{
return *src == *dest ? 0 : -1;
}
}
}
void print(PList list)
{
int max = 0;
char *color;
PList p;
if (!list)
{
return;
}
p = list;
while (p)
{
if (max < p -> time)
{
color = p -> color;
max = p -> time;
}
p = p -> next;
}
printf("%s\n",color);
}
void clear(PList list)
{
list -> next = NULL;
}
int main(int argc, char** argv)
{
int k;
PList list = (PList) malloc (sizeof(List));
list -> next = NULL;
list -> time = 0;
list -> color = NULL;
while(TRUE)
{
int count;
scanf("%d",&count);
if (count == 0)
{
exit(0);
}
for (k = 0; k < count; k++)
{
char *color = 0;
scanf("%s",color);
AddNode(list, color);
}
print(list);
clear(list);
}
} |
|