沉稳的紫外线 2022-10-12 10:11 采纳率: 62.5%
浏览 31
已结题

链表显示[Error] ld returned 1 exit status

问题遇到的现象和发生背景

报错 [Error] ld returned 1 exit status,检查了应该没有语法错误

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
 
//链表节点定义 
typedef struct s_node
{
    int data;
    struct s_node* pNext;
}Node;
 
Node* create_list_head();
Node* create_new_node(int node_data);
int add_node_head(Node* head, Node* new_node);
void display_list(Node* head);
void free_list(Node* head);
Node* revert_list(Node* head);

int main(int argc,char *argv[])
{
    //创建链表
    Node* head =create_list_head();
    if(NULL == head)
    {
        printf("create_list_head failed\n");
        return -1;
    }
    //填充数据(添加节点)
    int i;
    for(i=1;i<8;i++)
        add_node_head(head,create_new_node(i));
    //打印原来数据
    printf("before");
    display_list(head);
    //反转列表
    head =revert_list(head);
    printf("after");
    display_list(head);

    //释放列表空间
    free_list(head);
    return 0;
}

//创建新列表
Node* create_list_head()
{
    Node* head = (Node*)malloc(sizeof(Node));
    if(NULL != head)
    {
        head->data= -1;
        head->pNext= NULL;
    }
    return head;
}

//创建新节点
Node* create_new_node(int node_data)
{
    Node* new_node = (Node*)malloc(sizeof(Node));
    if(NULL != new_node)
    {
        new_node->data= node_data;
        new_node->pNext= NULL;
    }
    return new_node;
}

//头插法
int add_node_head(Node* head,Node* new_node)
{
    if (NULL ==head||NULL ==new_node)
    
        return -1;
    new_node->pNext = head->pNext;
    head->pNext = new_node;
    return 0;
}

//打印链表数据
void display_list(Node* head)
{
    if(NULL == head)
        return;
    Node* tmp = head;
    printf("list data");
    while(NULL !=(tmp=tmp->pNext));
    {
        printf("%d ", tmp->data);
    }
    printf("\n");
}

//释放链表
void free_list(Node* head)
{
    if(NULL==head)
        return;
    Node* p = head;
    while(p == p->pNext)
    {
        head-> pNext = p->pNext;
        //printf("free:%d\n,p->data");
        free(p);
        p = head;
    }
    free(head);
}

//头插法反转列表
Node* rever_list(Node* head)
{
    if(NULL == head)
        return NULL ;
    
    Node* p = head->pNext;
    head->pNext= NULL;
    Node* tmp = NULL;
    while(p)
    {
        tmp = p->pNext;
        add_node_head(head,p);
        p=tmp;
    }
    return head;
}

运行结果及报错内容
[Error] ld returned 1 exit status
我想要达到的结果

运行好多程序都显示这个,没有提示错误但是运行不出来,想知道怎样解决

  • 写回答

3条回答 默认 最新

  • 伍六七0804 2022-10-12 10:19
    关注

    Node* revert_list(Node* head);
    函数声明了没有实现

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月12日
  • 已采纳回答 10月12日
  • 创建了问题 10月12日

悬赏问题

  • ¥15 深度学习残差模块模型
  • ¥20 两个不同Subnet的点对点连接
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)