0
在此程序中,我試圖在功能SortedMerge(struct node* a, struct node* b)
中打印tail
,tail->next
和tail->data
值。我創建了一個鏈接列表就像頭指針「a
」和2->3->20
有頭指針「b
」 5->10->15
:在指針中需要一些幫助
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* next;
};
struct node* SortedMerge(struct node* a, struct node* b)
{
/* a dummy first node to hang the result on */
struct node dummy;
/* tail points to the last result node */
struct node* tail = &dummy;
printf("tail %d \n",tail);
printf("tail->next %d \n",tail->next);
printf("tail->data %d \n",tail->data);
}
/* Function to insert a node at the beginging of the
linked 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;
}
/* Drier program to test above functions*/
int main()
{
struct node* res = NULL;
struct node* a = NULL;
struct node* b = NULL;
push(&a,5); //some more like this (5->10->15)
push(&b,2); //some more like this (2->3->20)
res = SortedMerge(a, b);
return 0;
}
我的輸出是這樣的。
tail -686550032
tail->next 15585456
tail->data 1
任何人都可以解釋我這個。
'的printf( 「尾部%d \ n」 個,尾);'是一個未定義的行爲。使用'%p'打印指針。 – Ari0nhh
你期望輸出是什麼?問題:首先,'%d'不是指針的右邊說明符。使用'%p'。其次'tail-> next'和'tail-> data'是未初始化的值。打印這些將有隨機垃圾值。 – kaylum
在SortedMerge()函數中執行'struct node dummy;'時,您將在堆棧上分配一個未初始化的'struct node'。因此,打印內容將是一個隨機結果。 –