簡體   English   中英

C使用while循環和鏈表

[英]C using while loop with linked list

我遇到了一個問題,嘗試在鏈接列表上使用while循環。 我有兩個鏈接列表,即tempgraph 我正在使用while循環來執行任務while(temp != NULL) 為了繼續進行每個循環,我分配了temp = temp->link 但是,此代碼無法編譯。 我意識到遞歸函數可能是一個解決方案,但是該函數實際上要復雜得多,我認為遞歸不會是一個好主意。 順便說一句, graph已經是一個內置的鏈表。 提前致謝!

PS這是家庭作業的一部分。

temp = graph->link;
while(temp!=NULL){
    if(stack->link == NULL){
        stack->link = (node_pointer)malloc(sizeof(graph));
        stack->link->weight = temp->weight;
        stack->link->vertex = temp->vertex;
    }
    temp = temp->link; //Here is the problem.
}

編輯:

stack和graph都是鏈表的數組:

typedef struct node *node_pointer;

struct node{
    int vertex;
    int weight;
    int visited;
    struct node *link;
};
node_pointer graph[50];
node_pointer stack[50];
node_pointer temp;

0xC00000005不是編譯時錯誤。 當您訪問不允許訪問的內存位置時,即使指向NULL ,通常也會發生此錯誤。 它是一個運行時錯誤。 請檢查是否temp不為NULL,也是malloc編輯正常。 是嗎? 還要檢查所有其他變量。 使用調試器,通過valgrind運行它。 它將幫助您正確學習語言和調試技術。 特別是CompileTime和RuntimeErrors ;-)。

創建新節點時,還應明確將linkNULL 指針變量通常包含JUNK值,而無需初始化。 我假設您沒有將link設置為NULL並訪問JUNK內存位置。 垃圾進垃圾出。 你的邏輯IF TEMP(WHICH IS SET TO LINK) IS NOT EQUAL TO NULL如果LINK 不為空垃圾失敗。

暫無
暫無

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

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