qq_57931996 2022-01-09 10:46 采纳率: 88.9%
浏览 40
已结题

不带头结点的单链表,删除最大值数据后的链表打印不了,各位帮我看看原因。

#include"stdio.h"
#include"malloc.h"
typedef struct Node
{
    int data;
    struct Node* next;
}Node;
Node* create(int n)
{
    int x, i;
    Node* h , * s , * head = NULL;
    h = (Node*)malloc(sizeof(Node));
    h->next = NULL;
    head = h;
    printf("请输入第1个数据:");
    scanf_s("%d", &x);
    h->data = x;
    for (i = 2; i <= n; i++)
    {
        printf("请输入第%d个数据:", i);
        scanf_s("%d", &x);
        s = (Node*)malloc(sizeof(Node));
        s->data = x;
        h->next = s;
        h = s;
    }
    return head;
}
void display(Node* L)
{
    Node* k;
    k = L;
    while (k)
    {
        printf("%d    ", k->data);
        k = k->next;
    }
    printf("\n");
}
void dele(Node* L)
{
    Node* p, * q, * r, * s = NULL;
    q = L;
    p = L->next;
    r = L;
    while (p != NULL)
    {
        if (p->data > q->data)
        {
            q = p;
            s = r;
        }
        r = p;
        p = p->next;
    }
    if (q == L)L = L->next;
    else s->next = q->next;
    free(q);
}
int main()
{
    Node* List = (Node*)malloc(sizeof(Node));
    int num;
    printf("请输入数据的个数:");
    scanf_s("%d", &num);
    List = create(num);
    printf("原数据:\n");
    display(List);
    dele(List);
    printf("删除最大值后:\n");
    display(List);
}

img

  • 写回答

2条回答 默认 最新

  • weixin_45914955 2022-01-09 11:36
    关注

    建议将为节点的地址设为NULL,否则会出现访存错误,若出现访存错误,将create函数返回之前加入h->next=null

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题