StarZZZZ5 2021-07-19 21:15 采纳率: 100%
浏览 61
已采纳

这个怎么输入不了呢?

/*
用单链表保存m个整数,节点的结构为[data][next],且|data|<=n。现要求设计一个时间复杂度尽可能高效算法,
对于链表中绝对值相等的节点,仅保留第一次出现的节点而删除其余绝对值相等的节点。
分析:
中提到时间复杂度尽可能高效,其本上就是暗示我们采用空间换时间的方式。因为数据是小于等于n的,我们可以开辟一块
大小为n的数组,初始值为0,之后我们遍历链表,节点值既是我们寻找的下标,如果下标所在的数组值为0,则将值变为1,如果
数组值已经为1,则说明在此之前我们遇见过绝对值相同的元素,故将此节点删除。
*/
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int value;
struct LNode *next;
}LNode,*Linklist;
Linklist list_TailInsert(Linklist &L)
{
LNode *head = L,*rear = L;
L = (Linklist)malloc(sizeof(LNode));
L->next = NULL;
L->value = NULL;
int x;
printf("请输入单链表结点的个数:");
scanf("%d",&x);
for(int i = 0; i < x; i++)
{
int value;
printf("请输入单链表第%d个结点的值:",i+1);
scanf("%d",&value);
LNode *s;
s = (Linklist)malloc(sizeof(LNode));
s->value = value;
s->next = NULL;
rear->next = s;
rear = s;
}
rear->next = NULL;
return L;
}
void Display(Linklist &L)
{
LNode *p = L->next;
while(p != NULL)
{
printf("%d ",p->value);
p = p->next;
}
printf("\n");
}
int main()
{
Linklist L1;
list_TailInsert(L1);
Display(L1);
return 0;
}

  • 写回答

2条回答 默认 最新

  • Soda Wang 2021-07-19 21:36
    关注

    生成链表的时候,返回的是头结点的值,所以应该写

    Linklist L1 = list_TailInsert();
    

    另外,引用是C++里的,Display函数要改成

    void Display(Linklist L)
    

    完整代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct LNode
    {
        int value;
        struct LNode *next;
    }LNode,*Linklist;
    Linklist list_TailInsert()
    {
        LNode *L = (Linklist)malloc(sizeof(LNode));
        LNode *head = L,*rear = L;
        L->next = NULL;
        L->value = 0;
        int x;
        printf("请输入单链表结点的个数:");
        scanf("%d",&x);
        for(int i = 0; i < x; i++)
        {
            int value;
            printf("请输入单链表第%d个结点的值:",i+1);
            scanf("%d",&value);
            LNode *s;
            s = (Linklist)malloc(sizeof(LNode));
            s->value = value;
            s->next = NULL;
            rear->next = s;
            rear = s;
        }
        rear->next = NULL;
        return L;
    }
    void Display(Linklist L)
    {
        LNode *p = L->next;
        while(p != NULL)
        {
            printf("%d ",p->value);
            p = p->next;
        }
        printf("\n");
    }
    int main()
    {
        Linklist L1 = list_TailInsert();
        Display(L1);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月19日
  • 创建了问题 7月19日

悬赏问题

  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程