ifuchuan 发表于 2023-1-30 17:54:11

c语言链表查找一个节点的数据域,调用search_link_node()后再调用link_prinf()出错

#include "head.h"

typedef struct data{

char id;
struct data *next;

}DATA;

//链表节点的查找
DATA *search_link_node(DATA *head , char data){

DATA *temp = head;
   while(temp){
      if(temp->id == data){
            return temp;
      }
      temp = temp->next;
   }

return NULL;

}
//打印链表
void link_prinf(DATA *head){

   DATA *temp = head;
    while(temp->next){
    temp = temp->next;   
    printf("id = %c\n",temp->id);
   }
}
//释放链表
void free_link(DATA **head){

    DATA* temp = *head;
    while(*head != NULL){

       temp = *head;
       *head = (*head)->next;
       free(temp);
       temp = NULL;



    }

}

//创建单链表
DATA* create_link_node(int n){

DATA *p = (DATA*)malloc(sizeof(DATA));//创建头节点
DATA *temp = p;
for(int i = n ; i > 0 ; i--){

//第二个节点
DATA *node = (DATA*)malloc(sizeof(DATA));
if(node){
   
   
      scanf("%c",&node->id);
      node->next = NULL;

      temp->next = node;
      temp = temp->next;

}else{

   printf("malloc fair\n");

}
}

return p;

}

int main(){


DATA* p = NULL;
p = create_link_node(5);
//link_prinf(p);
DATA *res = search_link_node(p,5);
link_prinf(res);
//free_link(&p);
system("pause");
}

jhq999 发表于 2023-1-30 17:54:12

本帖最后由 jhq999 于 2023-1-30 19:47 编辑

因为
typedef struct data{

char id;//////注意是字符
struct data *next;

}DATA;
scanf("%c",&node->id);
所以
DATA *res = search_link_node(p,‘5’);//代入字符‘5’,不是数值5

ba21 发表于 2023-1-30 18:14:46

   while(temp->next)改成   while(temp)看看吧

ifuchuan 发表于 2023-1-30 18:22:25

ba21 发表于 2023-1-30 18:14
while(temp->next)改成   while(temp)看看吧

不写,改了打印链表时候要出错{:10_266

ba21 发表于 2023-1-30 18:36:42

ifuchuan 发表于 2023-1-30 18:22
不写,改了打印链表时候要出错{:10_266

?????????
别人调试你的代码,你也得把代码上全。
页: [1]
查看完整版本: c语言链表查找一个节点的数据域,调用search_link_node()后再调用link_prinf()出错