在C中制作可调整大小的char *数组

时间:2015-05-09 05:42:23

标签: c arrays

我在C中实现了一个可调整大小的数组,如下所示:

/mypage/#something

现在我需要修改这个数据结构,以便在可调整大小的数组中存储char *而不是整数。所以我需要修改函数以使集合为空,插入和删除元素到集合中,并检查是否元素在集合中。另外set不包含相同字符串的重复副本(char *具有相同的内容,我们可以使用strcmp来比较字符串)。

所以请帮助修改它。

示例:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "ArrayList.h"
void initArray(Array *a, size_t initialSize) {
  a->array = (int *)malloc(initialSize * sizeof(int));
  a->used = 0;
  a->size = initialSize;
}
void insertIntoArray(Array *a, int element) {
  if (a->used == a->size) {
    a->size *= 2;
    a->array = (int *)realloc(a->array, a->size * sizeof(int));
  }
  a->array[a->used++] = element;
}
void removeLast(Array *a)
{
    if (a->used == 0) {}
    else{
        a->used--;  
    }   
}
void freeArray(Array *a) {
  free(a->array);
  a->array = NULL;
  a->used = a->size = 0;
}
int main(){
    Array a;
    initArray(&a,10);  // initially 10 elements
    int i;
    for(i=0;i<100;i++)
        insertIntoArray(&a,i);  
    printf("%d\n",a.array[9]);  
    printf("%d\n", a.used);  
    freeArray(&a);
}

我的ArrayList.h是这样的:

MySet *s;
initSet(s);
insert(s, “Hello”); 
insert(s, “world”); 
insert(s, “Hello”);
del(s, “world”);
isInSet(s, “Hello”); 
emptySet(s); 

0 个答案:

没有答案