c++的问题求大神帮助啊!!!!!!

2025-03-21 02:52:52
推荐回答(2个)
回答1:

#include "set.h"
#include 

void newSet(uset* set, int type) {
set->elem = malloc(INITSETSIZE * type);
set->card = 0;
set->type = type;
}

void deletSet(uset *set) {
free(set->elem);
set->elem = NULL;
set->card = 0;
}

void addElem(void *elem, uset* set) {
int i;
if (set->type == CHAR) {
for (i = 0; i < set->card; i++) {
if (((char*)set->elem)[i] == *(char*)elem)
return;
}
if (set->card % INITSETSIZE == 0) {
set->elem = realloc(set->elem, (set->card + INITSETSIZE) * CHAR);
}
((char*)set->elem)[set->card++] = *(char*)elem;
}
else if (set->type == INT) {
for (i = 0; i < set->card; i++) {
if (((int*)set->elem)[i] == *(int*)elem)
return;
}
if (set->card % INITSETSIZE == 0) {
set->elem = realloc(set->elem, (set->card + INITSETSIZE) * INT);
}
((int*)set->elem)[set->card++] = *(int*)elem;
}
else if(set->type == DOUBLE) {
for (i = 0; i < set->card; i++) {
if (((double*)set->elem)[i] == *(double*)elem)
return;
}
if (set->card % INITSETSIZE == 0) {
set->elem = realloc(set->elem, (set->card + INITSETSIZE) * DOUBLE);
}
((double*)set->elem)[set->card++] = *(double*)elem;
}
}

void remElem(void *elem, uset* set) {
int i;
if (set->type == CHAR) {
for (i = 0; i < set->card; i++) {
if (((char*)set->elem)[i] == *(char*)elem) {
((char*)set->elem)[i] = ((char*)set->elem)[set->card - 1];
set->card--;
if (set->card % INITSETSIZE == 0 && set->card != 0) {
set->elem = realloc(set->elem, set->card * CHAR);
}
}
}
}
else if (set->type == INT) {
for (i = 0; i < set->card; i++) {
if (((int*)set->elem)[i] == *(int*)elem) {
((int*)set->elem)[i] = ((int*)set->elem)[set->card - 1];
set->card--;
if (set->card % INITSETSIZE == 0 && set->card != 0) {
set->elem = realloc(set->elem, set->card * INT);
}
}
}
}
else if (set->type == DOUBLE) {
for (i = 0; i < set->card; i++) {
if (((double*)set->elem)[i] == *(double*)elem) {
((double*)set->elem)[i] = ((double*)set->elem)[set->card - 1];
set->card--;
if (set->card % INITSETSIZE == 0 && set->card != 0) {
set->elem = realloc(set->elem, set->card * DOUBLE);
}
}
}
}
}

回答2:

思路:if -999 break 或者用!=-999循环
子函数是一个带递归的n=0 f(n)=n+f(n-1),或者使用循环。
请自己思考,代码就很简单了,组装而已。http://wenku.baidu.com/link?url=1hOLMMCqek6CbxYoxa63wF6OoLD9rvR3cxpP3mqKW-ZKfv1ma84cHLcN0NOn-S_cxMXsXDWHGTjhmZlr1ueuWUOP2zeHnhU8-B-HId_GI6y可借鉴一下。