gpt4 book ai didi

c - C 中的 2 元素数组列表

转载 作者:行者123 更新时间:2023-11-30 21:29:04 24 4
gpt4 key购买 nike

我正在尝试获取一个索引的整数列表,即我放入 aab,我得到 97 97 98,我希望每个索引都像在常规数组中一样。

typedef struct element {   
struct element *next;
int value;
int index;
} listElements;

事情是当我分配指针 ->索引=整数; integer++ 然后 printf 它,值列按照应有的 a a b 打印,但索引列打印 2 0 1 。我哪里出错了?

编辑:更多代码

int addToList ( listElements *list, int character, int integer ) {
listElements *pointer, *element;
pointer = list;

while ( pointer -> next != NULL ) {
pointer = pointer -> next;
}

element = ( listElements* ) malloc ( sizeof ( listElements ) );
element -> value = character;
element -> index = integer;
integer++;
element -> next = NULL;
pointer -> next = NULL;

return integer;
}

void printList ( listElements *list ) {
listElements *pointer = list;

while ( pointer != 0 ) {
printf ( "%d %d\n", pointer -> value, pointer -> index );
pointer = pointer -> next;
}
}


int main () {

char character;

first = ( listElements* ) malloc ( sizeof ( listElements ) );
first -> value = character = getchar ();
first -> index = 0;
first -> next = NULL;


while ( ( character = getchar () ) != 'Q' ) {
first -> index = addToList ( first, character, first -> index );
}

printList ( first );

return 0;
}

最佳答案

索引不正确(2 0 1 而不是 0 1 2。如果这就是您所要求的),因为您正在这样做:

first -> index = addToList ( first, character, first -> index );

您正在将返回值分配给第一个元素的索引。

将其更改为如下所示:

int index = 1; // declare at right position in main.
while ( ( character = getchar () ) != 'Q' )
{
index = addToList ( first, character, index );
}

关于c - C 中的 2 元素数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com