我正在努力解決一個關于 C 中鏈表的看似非常簡單的問題。這里是:
我需要列印一個在元素之間有空格的反向鏈表。列印最后一個(在本例中為第一個)元素后,我必須換頁而不是列印空格。所以它會是這樣的:
Linked List: [1,2,3,4]
Expected Output: 4 3 2 1\n
我知道我必須存盤來自第一個元素的資訊,以便創建一個條件結構來實作問題所要求的內容。但是,由于我使用的是遞回,所以我不知道如何。
這是我當前功能的狀態:
void print_list(LinkedNode *start)
if(start == NULL){
return;
}
print_list(start->next);
printf("%d ", start->data);
return;
這是串列的結構:
typedef struct LinkedNode LinkedNode;
struct LinkedNode {
int data;
LinkedNode *next;
};
另請注意,除了stdio.h和stdlib.h之外,我不能使用任何標題。
我幾乎忘了提及,但這是我在這里的第一個問題,所以我非常感謝任何提示。
提前致謝!
uj5u.com熱心網友回復:
如果您想以 結尾,這是一個非常簡單的方法\n,而不是" \n"。可能有更好的方法,但我只是想要一個快速的解決方案:
void print_list(LinkedNode *start, char delim)
{
if(start == NULL){
return;
}
print_list(start->next, ' ');
printf("%d%c", start->data, delim);
return;
}
int main(int argc, char** argv)
{
// initialize my_list
print_list(my_list, '\n');
}
uj5u.com熱心網友回復:
弄清楚了!
感謝@Afshin 和@WhozCraig!
解決方法如下:
void print_aux(LinkedNode *start, int aux){
if(start == NULL){
return;
}
aux ;
print_aux(start->next, aux);
aux--;
if(aux!=0) printf("%d ", start->data);
else printf("%d", start->data);
return;
}
void print_list(LinkedNode *start){
print_aux(start, 0);
printf("\n");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/448950.html
上一篇:XML遞回節點添加
