[英]C using while loop with linked list
我遇到了一個問題,嘗試在鏈接列表上使用while循環。 我有兩個鏈接列表,即temp
和graph
。 我正在使用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 ;-)。
創建新節點時,還應明確將link
為NULL
。 指針變量通常包含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.