我有兩個功能:顯示循環列表無端環
void display(struct node *start) {
struct node *ptr;
ptr = start;
while (ptr -> next != start) {
printf("\t %d", ptr -> data);
ptr = ptr -> next;
}
printf("\t %d", ptr -> data);
}
struct node *insert_beg(struct node *start) {
struct node *new_node;
new_node = (struct node *)malloc(sizeof(struct node));
printf("\n Enter data : ");
scanf("%d", &new_node -> data);
new_node -> next = start;
start = new_node;
return start;
}
使用insert_beg(start)
並試圖顯示使用display(start)
此列表之後,我有無限循環。
感謝您的支持。
在功能'insert_beg'變量'start'是*本地*變量。一旦函數返回,您認爲會發生什麼變化?我建議你搜索並閱讀*模擬c *中的引用。 –
@Someprogrammerdude的評論是顯而易見的(而且迄今爲止最明智的),但你怎麼知道*該列表是循環的?它可能有一個起始尾部,就像數字6一樣。你的算法很容易受到這個影響。 – Bathsheba
這是循環鏈表,其中是插入結束函數 – varnit