【问题标题】:I'm trying to delete a linked list.But it is running into an finite code我正在尝试删除一个链表。但它正在运行一个有限的代码
【发布时间】:2014-08-24 09:05:04
【问题描述】:
 void delete_list()
    {
     tr=header; //tr is`also defined at the top near struct node.
    while(tr!=NULL)
     {
     q=tr; // q is defined at the top as a pointer.
     tr=tr->next;
     free(q);
     }
     return;
    }

当我在 main 方法中调用此函数时,它没有给出所需的输出。

【问题讨论】:

  • 这段代码没问题,问题出在你没有显示的代码中。要获得更好的帮助,请发帖MCVE
  • 我不会说这段代码没问题。我们不知道“tr”的类型和“header”的初始化,以及应该如何释放该类型的元素。

标签: c singly-linked-list


【解决方案1】:

您还应该在之后将指针'header'设置为NULL。 也许你所有其他的释放指针。

还要确保在创建过程中,“下一个”指针显式设置为 NULL 或有效指针。

【讨论】:

  • 我在显示功能中打印它。但它仍然没有显示!
  • void display() { tr=header; while(tr!=NULL) { printf("%d\n",tr->data); tr=tr->下一个; }
  • void palindrome() { int count=0;诠释我; tr=标题; while(tr!=NULL) { tr=tr->next;计数++; } 字符 arr[计数]; tr=标题; while(tr!=NULL) { for(i=0;idata; tr=tr->下一个; } //tr=tr->下一个; } tr=标题; while(tr!=NULL) { for(i=count-1;i>=0;i--) { if(arr[i]==tr->data) tr=tr->next; else { printf("不是回文");返回; } } printf("是回文"); } }
  • 我正在尝试检查上述代码是否是回文。它正在接受数据,但不打印它是否是 aplindrome
  • 您的显示函数看起来并不奇怪,但是,要知道它是否被调用,请使用 printf("Debug: start display\n");您还可以跟踪计数器并调试每个步骤。 tr->data 类型真的是 int 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2019-08-28
相关资源
最近更新 更多