簡體   English   中英

C:打印反向鏈表

[英]C: Print Reverse Linked List

我正在努力解決一個看似非常簡單的關於 C 中鏈表的問題。它是這樣的:

我需要打印一個反向鏈表,元素之間有一個空格。 打印最后一個(在本例中為第一個)元素后,我必須換頁而不是打印空格。 所以它會是這樣的:

Linked List: [1,2,3,4]
Expected Output: 4 3 2 1\n

我知道我必須存儲來自第一個元素的信息,以便創建一個條件結構來實現問題的要求。 但是,由於我正在使用遞歸,所以我不知道如何使用。

這是我當前的 function 的 state:

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.hstdlib.h之外,我不能使用任何 header 。

我差點忘了提,但這是我在這里的第一個問題,所以我真的很感激任何提示。

提前致謝!

如果您想以\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');
}

弄清楚了!

感謝@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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM