【发布时间】:2020-04-07 16:51:39
【问题描述】:
我应该在 C 中的循环单链表上递归地工作,我的问题是,由于是递归的,我无法正确打印列表,并且在访问 display() 中的 tmp-> 键时遇到了一些问题当我推送超过 1 个元素并且我想稍后显示列表时的功能(由于非法访问导致的分段错误)。 tmp 和 list 都声明为 struct node* tmp = NULL; 和 struct node* list = NULL;
主要摘录:
case 8:
tmp = list;
if (tmp->next == tmp)
printf("\n%d\n", tmp->key);
else
display (list, tmp);
break;
功能:
void display (struct node* head, struct node* tmp){
if (head != NULL){
if (tmp != head){
printf ("%d ", tmp->key);
tmp = tmp->next;
display(head, tmp);
}
}
}
【问题讨论】:
-
您只管理具有 一个 单元格的循环列表?
-
@bruno 你是什么意思?如果您的意思是一个字段(键),那么是的,它只需要一个字段。
-
不,我问是因为我只看到 list->next == list / tmp->next == tmp 的情况,所以具有一个单元格的循环列表,您不会检测到两个单元格的循环列表,其中 list->next != list 但 list->next->next == list等
标签: c linked-list circular-list