鱼C论坛

 找回密码
 立即注册
查看: 2125|回复: 4

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

[复制链接]
发表于 2023-1-30 17:54:11 | 显示全部楼层 |阅读模式
60鱼币
#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");
}
最佳答案
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

最佳答案

查看完整内容

因为 所以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:14:46 | 显示全部楼层
   while(temp->next)改成   while(temp)看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-30 18:22:25 | 显示全部楼层
ba21 发表于 2023-1-30 18:14
while(temp->next)改成   while(temp)看看吧

不写,改了打印链表时候要出错{:10_266
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:36:42 | 显示全部楼层
ifuchuan 发表于 2023-1-30 18:22
不写,改了打印链表时候要出错{:10_266

?????????
别人调试你的代码,你也得把代码上全。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 17:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表