| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么老是WA, 我都快疯了.我是用二叉搜索树做的. 想了n久没找到错误.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct NodeTag {
int number;
int duplicate;
struct NodeTag* left;
struct NodeTag* right;
} NodeType;
typedef NodeType* TreeType;
/*向二叉搜索树添加节点*/
void addNode(TreeType* tree, int number);
/*遍历二叉树, 输出结果*/
void go(TreeType* tree);
/*初始化数组, 数组用于字母到数字的映射*/
void init(int map[]);
/*Duplicates flag*/
int flag = 0;
int main() {
int map[255];
int nNumbers;
int i;
int number;
TreeType tree;
char ch;
init(map);
tree = NULL;
scanf("%d", &nNumbers);
for (i = 0; i < nNumbers; i++) {
number = 0;
ch = getchar();
while (isspace(ch)) ch = getchar();
while (ch != '\n') {
if ((ch >= 'A' && ch <= 'Y' && ch != 'Q')
|| (ch >= '0' && ch <= '9')) {
number *= 10;
number += map[ch];
}
ch = getchar();
}
addNode(&tree, number);
}
go(&tree);
if (!flag) {
printf("No duplicates.\n");
}
return 0;
}
void addNode(TreeType* tree, int number) {
if (*tree == NULL) {
*tree = malloc(sizeof(NodeType));
(*tree)->number = number;
(*tree)->duplicate = 1;
(*tree)->left = NULL;
(*tree)->right = NULL;
return;
}
if ((*tree)->number == number) {
(*tree)->duplicate++;
} else {
if (number > (*tree)->number) {
addNode(&((*tree)->right), number);
} else {
addNode(&((*tree)->left), number);
}
}
}
void go(TreeType* tree) {
if (*tree != NULL) {
go(&((*tree)->left));
if ((*tree)->duplicate > 1) {
flag = 1;
printf("%03d-%04d %d\n", (*tree)->number / 10000,
(*tree)->number % 10000, (*tree)->duplicate);
}
go(&((*tree)->right));
free(*tree);
*tree = NULL;
}
}
void init(int map[]) {
map['0'] = 0;
map['1'] = 1;
map['2'] = 2;
map['3'] = 3;
map['4'] = 4;
map['5'] = 5;
map['6'] = 6;
map['7'] = 7;
map['8'] = 8;
map['9'] = 9;
map['A'] = map['B'] = map['C'] = 2;
map['D'] = map['E'] = map['F'] = 3;
map['G'] = map['H'] = map['I'] = 4;
map['J'] = map['K'] = map['L'] = 5;
map['M'] = map['N'] = map['O'] = 6;
map['P'] = map['R'] = map['S'] = 7;
map['T'] = map['U'] = map['V'] = 8;
map['W'] = map['X'] = map['Y'] = 9;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator