急求大牛啊,这个简单的链表到底在哪出错了

#include

#include

struct list {

char str;

struct list * next;

};

int main()

{

struct list * head = NULL;

struct list * prev,* current;

char input;

while(scanf("%c",&input) && input != '#'){

current = (struct list *)malloc(sizeof(struct list));

if(head == NULL)

head = current;

else

prev->next = current;

current->next = NULL;

current->str= input;

prev = current;

}

if(head == NULL)

printf("NO DATA\n");

else

printf("the string:\n");

current = head;

while (current != NULL){

printf ("%c",current->str);

current = current->next;

}

current = head;

while (current != NULL){

free(current);

current = current->next;

}

printf("\n");

return 0;

}

VC6.0编译完也输出了 但是怎么出现了一个框Debug Assertion Failed!然后程序停止工作了

求各位大牛给我解释下啊,小弟感激不尽啊,我无语啊,在这上边纠结几天了,看了好多链表

也没看出来,有的说是内存泄露,不明白啊 怎么解决,急啊啊啊啊!

struct

list

------解决方案--------------------

问题出在这里啊

while (current != NULL){

free(current);

current = current->next;

}

你都把这个指针所指向的内存释放了,下面怎么又使用了呢?

建议如下:

while (current != NULL){

prev=current->next;

free(current);

current = prev;

------解决方案--------------------

用debugger单步跟一跟。

------解决方案--------------------

1楼应该是对的,free后就释放掉了

------解决方案--------------------

楼主可以在第44行设置个断点,

看看程序走到这个断点后,为什么free的时候会出问题。

你这样第一次free估计没啥问题,第二次应该会有问题了

c语言链表容易犯的错误,急求大牛啊这个容易的链表到底在哪出错了相关推荐

  1. C语言中常犯的错误(一)

    程序出错有三大类:语法错误.逻辑错误和运行错误 对于语法错误,编译器会给出精确到行的提示:逻辑错误则需要在流程图的辅助下,重点关注留意花括号,进行判定:而运行错误则是指程序在接收到某些数据时因为处理不 ...

  2. C语言新手常犯的错误-截断

    截断往往发生在复制过程中 准确地说,是将占用字节数较多的变量赋值给占用字节数较少的变量时,如j将long(16个字节)赋值给char(1个字节)时,这时候long类型的变量只将最低的一位赋给了char ...

  3. c语言中经常犯的错误

    1.切忌将函数的参数作为数组定义时的长度 例如 f(int x){ a[x]; }

  4. C语言实现数据文件怎么找,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  5. c语言保存文件格式如何改回来,急求如何将下列C语言程序数据存储到文件中?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  6. 用c语言复制字符串的元音字母,急求:编写程序,将一个字符串中的元音字母复制到另一个字符串,然后输出。...

    #include #include void str(char a[100],char b[100]) { int i=0, j=0; while(a[i]!='\0')//'\0'代表ASCLL码0 ...

  7. c语言中文件如何插入数据,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  8. c语言源程序文件.c如何保存,急求如何将下列C语言程序数据存储到文件中?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 求如何改动才能将下列程序的存储输入或输出数据(或两者一起)到指定的文件(或运行时直接创立一个文件)如Arrangement中. #include int ...

  9. c语言数学语文英语成绩编程,急求一编程题!…

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include "stdlib.h" int i,j; struct STUDENT { int xuehao; ...

最新文章

  1. 由于Coinbase插件,BCH被5000万商家接受
  2. CTO:再写if-else,逮着一个罚款1000!
  3. js保持div悬浮,不随页面向下滚动而被覆盖
  4. 为女儿示范的两张石膏像素描
  5. 简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏
  6. 分布式系统的那些事儿(六) - SOA架构体系
  7. 唐人街神探:用数学方法确定罪犯位置
  8. dos系统重启计算机名,dos系统重启的命令是是
  9. NOIP2014 uoj20解方程 数论(同余)
  10. WebSocket使用javax.websocket.RemoteEndpoint.Basic.sendObject(Object arg0)向页面方法发送对象
  11. 20190906:(leetcode习题)Shuffle an Array
  12. 时间序列分析ARMA模型-学习笔记
  13. Unity 实现部分模型流光效果
  14. idea修改主题和更换背景
  15. HTML图片鼠标滑动加边框,鼠标移动到图片上时,用css怎么实现图片加边框效果?...
  16. bat一键清理系统垃圾/系统日志
  17. 公司股权等比稀释是什么意思
  18. UNIX再学习 -- ps、top、kill 指令
  19. Flutter 必须知道的布局规则
  20. 使用3DLiDAR传感器进行基于同心区域的区域地面分割和地面似然估计

热门文章

  1. 【Android开发】范例2-实现简易绘图板
  2. tomcat修改默认web目录
  3. 几个常用的流量统计工具比较
  4. android 网络调试 源代码,一个步骤教你调试Android系统源代码
  5. 2017电大c语言形考册,(2017年电大)中央广播电视大学c语言程序设计形成性考核册及答案.doc...
  6. mysql yearweek 日期不准_Mysql 中,WEEK 与YEARWEEK函数的参数问题
  7. 查询时间范围_MySQL慢查询(中):正确处理姿势,你get到了吗?
  8. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...
  9. 台式电脑计算机无法启动 启动修复,Win10启动修复无法修复你的电脑解决方法
  10. mysql 导入一个数据库_mysql导入一个数据库