2016-01-12 137 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