0
 #include "int_set.h" 


  Set * int_set_new()
   {
    Set *result; 

result-> current_elements = 0; 
result-> max_elements = MIN_SIZE; 
result->array =malloc(sizeof(int) * MIN_SIZE);
return result;
  }
   int int_set_lookup(Set*this, int item)
  {
  int i = 0;
int result;
int found = 0 ;
for ( int i = 0; i<this->max_elements && found ==0 ; i++){
    //if (result->array[i] == item ) {
    if(result->array[i]== item){ // error invalid type of argument'->'

        found = 1; 
    } 
}
    if ( i>= this-> current_elements  ){
        found*= -1 ; 
    }  
    return found ;
} 

 int int_set_add(Set*this, int item){


if ( int_set_lookup(this, item) == 1){
    return 0;
}
if ( this-> current_elements < this -> max_elements  ){
    this -> array[this->current_elements] = item ; 
    this->current_elements++ ; 
    return 1 ;
}else{
    int i;
    int new_array[i];

    int [] new_array = malloc(sizeof(int)* 1.5*this->current_elements); // error
    for ( i=0; i<this->max_elements ; i++){
        new_array[i] = this->array[i];

    }
    this-> max_elements = 1.5*this->current_elements; 

    new_array[this->current_elements] = item;
    this-> current_elements ++;

    free ((void *)this->array); 

    this->array = new_array ; 
    return 1;
}

}

   int int_set_remove(Set * this, int item){
if ( int_set_lookup(this, item) == 0){
    return 0;
}
int i = 0;
int array[i];

for( i ; i< this-> current_elements && this->array != item; i++);

for( i; i< this-> current_elements-1;  i++){
    array[i] = array [i+1];
}
this-> current_elements-- ; 

int freeSlots= this->max_elements-this->current_elements;
int maxFree= 32> this->current_elements? 16 : this->current_elements/2 ;
if( freeSlots > maxFree ){

    int new_array[i];
    //int [] new_array = malloc(sizeof(int)* 1.5*this->current_elements);
    int [] new_array = malloc(sizeof(int)* 1.5*this->current_elements); // error
    for ( i=0; i<this->current_elements ; i++){
        new_array[i] = this->array[i];

    }
    this-> max_elements = 1.5*this->current_elements; 



    free ((void *)this->array); 

    this->array = new_array ; 
    }

   return 1;
     }

//error带有的2 行

'[' 标记错误之前的预期标识符或 '('

如何解决上述错误?

有问题的线路是

if(result->array[i]== item){ // error invalid type of argument'->'

int [] new_array = malloc(sizeof(int)* 1.5*this->current_elements); // error

请帮忙!

4

2 回答 2

0
  1. result是一个int,而不是一个指针,所以你不能使用->. 并不是说您可以将它与 an 一起使用int *,因为它可以引用 astruct *
  2. 你已经声明new_array了,所以不需要再做一次。与 Java 不同, Plusint [] new_array在 C 中的语法不正确。
于 2013-10-20T20:41:35.573 回答
0

result是一个局部变量,所以 in int_set_new()it 是 aSet*但 in int_set_lookup()it 是int. 如果将它更改为int*then 它指向一个 int,而不是一个结构,那么你怎么能引用一个 int 的字段->

对于第二个错误,this是 C++ 中的保留字。也许你正在用错误的语言编译

顺便说一句,您应该重新缩进您的代码

于 2013-10-21T00:24:36.303 回答