typedef struct {
char * fname;
char * lname;
} single_entry;
我正在进行一项我们无法使用的练习:
single_entry * next;
创建链接列表。
如何在不使用链接列表的情况下完成相同的操作?我在考虑制作另类这样的结构吗?
typedef struct {
single_entry * next;
} myEntry;
我怎么用这个呢?我对一个结构中的所有东西都非常熟悉。
答案 0 :(得分:1)
typedef struct
{
char *fname;
char *lname;
} single_entry;
typedef struct
{
single_entry *array;
unsigned size, capacity;
} se_array;
void initialise(se_array *sarray)
{
sarray->size = 0;
sarray->capacity = 0;
}
void add_to_array(se_array *sarray, single_entry entry)
{
if(sarray->capacity == 0)
{
sarray->array = malloc(sizeof(single_entry) * (sarray->capacity = 3));
sarray->array[sarray->size++] = entry;
}
else if(sarray->capacity == sarray->size)
{
sarray->array = realloc(sarray->array, sizeof(single_entry) * (sarray->capacity *= 1.5));
sarray->array[sarray->size++] = entry;
}
else
{
sarray->array[sarray->size++] = entry;
}
}
int main(void)
{
se_array my_array;
initialise(&my_array);
single_entry my_entry;
strcpy(my_entry.fname, "first");
strcpy(my_entry.lname, "last");
add_to_array(&my_array, my_entry);
my_array.array[0].fname; // element 0 fname
}