因此,目前我在GetNth
函數中有一個if
聲明,它試圖進行測試。但是當我插入一個printf
函數時,它讓我注意到即使條件未滿足,它也會通過if
語句,但是,當我刪除printf
語句時,該程序完美無缺。任何解釋將不勝感激。如果鏈接列表中的聲明未按預期工作
注意!這不是我的代碼,我試圖研究鏈表,並且正在改變代碼,試圖學習!
驗證碼:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
/* Link list node */
struct node
{
int data;
struct node* next;
};
/* Given a reference (pointer to pointer) to the head
of a list and an int, push a new node on the front
of the list. */
void push(struct node** head_ref, int new_data)
{
/* allocate node */
struct node* new_node =
(struct node*) malloc(sizeof(struct node));
/* put in the data */
new_node->data = new_data;
/* link the old list off the new node */
new_node->next = (*head_ref);
/* move the head to point to the new node */
(*head_ref) = new_node;
}
/* Takes head pointer of the linked list and index
as arguments and return data at index*/
int GetNth(struct node* head, int index)
{
struct node* current = head;
int count = 0; /* the index of the node we're currently
looking at */
int a;
while (current != NULL)
{
if (count == index)
return(current->data);
a = current->data;
printf("\n Testing If in linked list, should bring same desired value which is 4 %d \n ",a);
count++;
current = current->next;
}
/* if we get to this line, the caller was asking
for a non-existent element so we assert fail */
assert(0);
}
/* Drier program to test above function*/
int main()
{
/* Start with the empty list */
struct node* head = NULL;
/* Use push() to construct below list
1->12->1->4->1 */
push(&head, 1);
push(&head, 4);
push(&head, 1);
push(&head, 12);
push(&head, 1);
if (head != NULL)
{
}
/* Check the count function */
printf("Element at index 3 is %d", GetNth(head, 3));
getchar();
}
您能否用解決方案示例詳細說明您的答案。 –
添加了詳細的答案。 –
多數民衆贊成在偉大.... –