标题:简单链表程序运行停止问题
只看楼主
一叶孤城222
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-15
结帖率:0
已结贴  问题点数:20 回复次数:12 
简单链表程序运行停止问题
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>

struct list
{
    int data;
    struct list *next;
};

typedef struct list node;
typedef node *link;

int main(void)
{
    link ptr, head;
    int num, i;
    ptr = (link)malloc(sizeof(node));
    ptr = head;
    printf("please enter 5 numbers:\n");
    for(i=0; i<=4; i++)
    {
        scanf("%d", &num);
        ptr->data = num;
        ptr->next = (link)malloc(sizeof(node));
        if(i == 4)
            ptr->next = NULL;
        else
            ptr = ptr->next;
    }
    ptr = head;
    while(ptr != NULL)
    {
        printf("The value is %d\n", ptr->data);
        ptr = ptr->next;
    }
    ptr = head;
    while(ptr != NULL)
    {
        ptr = head;
        head = ptr->next;
        free(ptr);
    }
   
    getch();
    return 0;
}
这是程序,编译没问题,但是运行后,将输入的链表显示之后,程序出现停止运行,并返回return 3221225477
如图:


想了好久,没看出来哪里的问题。希望大家帮忙看看,不胜感激!
搜索更多相关主题的帖子: 运行 next node link head 
2018-01-16 19:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>

struct list
{
    int data;
    struct list *next;
};

typedef struct list node;
typedef node *link;

int main(void)
{
    link ptr, head;
    int i;
    printf("please enter 5 numbers:\n");
    head = (link)malloc(sizeof(node));
    ptr = head;
    scanf("%d", &ptr->data);
    for(i=0; i<4; i++)
    {
        ptr->next = (link)malloc(sizeof(node));
        ptr = ptr->next;
        scanf("%d", &ptr->data);
    }
    ptr->next = NULL;
    ptr = head;
    for (; ptr; ptr=ptr->next)
        printf("The value is %d\n", ptr->data);
    while (head)
    {
        ptr = head->next;
        free(head);
        head = ptr;
    }
    getch();
    return 0;
}
2018-01-16 20:11
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:4 
回复 楼主 一叶孤城222
    ptr = (link)malloc(sizeof(node));
    ptr = head;

这里应该是head=(link)malloc(sizeof(node));


    if (n==4)
        ptr->next=NULL;
这里应该是ptr->next->next=NULL;

还是吹版写的简洁容易理解很多~

PS:头节点一般是为了插入和删除节点操作,它一般不存放数据的~

[此贴子已经被作者于2018-1-17 09:01编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-01-17 09:00
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:4 


[此贴子已经被作者于2018-1-17 10:37编辑过]

2018-01-17 10:30
li384022
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:176
注 册:2017-12-29
得分:0 
  发回帖不能撤回是最蛋疼的

[此贴子已经被作者于2018-1-17 10:44编辑过]

2018-01-17 10:40
一叶孤城222
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-15
得分:0 
回复 2楼 吹水佬
谢谢,太感谢了!
2018-01-17 12:27
一叶孤城222
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-15
得分:0 
回复 3楼 九转星河
十分感谢,多谢指教
2018-01-17 12:28
一叶孤城222
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-10-15
得分:0 
回复 5楼 li384022
2018-01-17 12:28
虫眼
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:314
专家分:1121
注 册:2017-11-29
得分:4 
吹老大不用程序代码框回帖,差评。
2018-01-17 16:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用虫眼在2018-1-17 16:16:50的发言:

吹老大不用程序代码框回帖,差评。

偷懒,没用code标签。
2018-01-17 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484285-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.110169 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved