2016-01-12 89 views
-3

我试图得到一个整数索引列表,即我放在aab我得到97 97 98,我希望每个这些索引在常规数组中。2元素数组列表中的C

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

的事情是,当我给你pointer -> index = integer; 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

没有线索你在问什么。什么是“aab”?请显示相关代码。 – OldProgrammer

+4

显示构建列表的代码。 – trojanfoe

+0

您的代码显示无法打印。你的印刷值在哪里? – OldProgrammer

回答

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); 
} 
+0

谢谢!对我来说,它仍然很奇怪,它将值正确地分配给一个班次,但至少现在起作用。 – ijkl

+0

如果有效,请接受答案。 – phoenix

+0

对不起。我比较新。 – ijkl