【问题标题】:Delete odd-numbers in a list C删除列表中的奇数 C
【发布时间】:2018-10-26 22:03:17
【问题描述】:

我需要 C 中列表和节点的帮助。我在 .h 文件中将它们定义为结构如下:

typedef struct node{

     int value;
     struct node*prox;

 }node;

 typedef Nodo *list;

我不明白为什么删除所有奇数的功能不起作用。该程序正在崩溃。我哪里做错了?

list delete_odd_numbers(list l){

   node*temp;
   node*current;
   node*prev;

   if(l->value%2!=0){         

        temp=l;
    l=l->prox;
    free(temp);

   }else{

       prev=NULL;
       current=l;
       while(current!=NULL){

           if(current!=NULL &&current->value%2!=0){

               temp=current;
               prev->prox=current->prox;
               free(temp);

           }else{

           prev=current;
           current=current->prox;

           }
       }

   }
   return l;

}

【问题讨论】:

  • 您是否尝试过使用调试器(可能是 gdb 或 lldb)?它可以帮助您找到崩溃的实际线路。

标签: c list struct


【解决方案1】:

您知道如何使用调试器并在查看变量值的同时单步执行代码吗?在任何情况下,在大的“else”语句中,您正在初始化 prev=NULL,然后再往下,您正在引用 prev->prox——因此您正在取消引用一个空指针

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 2020-05-14
    • 1970-01-01
    • 2017-02-06
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2018-04-13
    相关资源
    最近更新 更多