1
typedef struct {
        nat id;
        char *data;
        } element_struct;

typedef element_struct * element;

void push(element e, queue s) {
        nat lt = s->length;
        if (lt == max_length - 1) {
                printf("Error in push: Queue is full.\n");
                return;
        }
        else {
                s->contents[lt] = e;
                s->length = lt + 1;
        }
}
int main () {
         push(something_of_type_element, s);
}

我将如何格式化“ something_of_type_element”?

谢谢

注:nat 与 int 相同

4

2 回答 2

3

怎么样:

element elem = malloc(sizeof(element_struct));
if (elem == NULL) {
    /* Handle error. */
}

elem->id = something;
elem->data = something_else;

push(elem, s);

请注意,这里缺少很多内存管理......

于 2008-11-13T02:44:34.320 回答
1

像这样:

element_struct foo = { 1, "bar" };
push(&foo, s);

如果你有 C99 编译器,你可以这样做:

element_struct foo = {
    .id = 1,
    .data = "bar"
};
push(&foo, s);

请注意,如果结构中的数据需要比定义它的范围更长,则必须复制结构中的数据。否则,可以使用 malloc(见下文)在堆上分配内存,或者可以使用全局或静态变量。

element_struct foo = malloc(sizeof (element_struct));

foo.id = 1;
foo.data = "bar";
push(foo, s);
于 2008-11-13T02:44:55.520 回答