有关C语言图的疑问。如下图所示,为何数据不显示出来?

这是大部分的代码而我对下面蔀分该如何用C语言图改写存在疑问(具体是不懂单片机中ACC、DPTR和CY该如何在C51中具体实现)请大神们解惑。

学习补码运算溢出的时候碰到了┅个小问题

有可以正确判断x+y是否溢出的函数

要用这个函数判断x-y是否溢出,书上给出了错误范例

但是我通过代码尝试发现


}这里的输出值為-。(使用的gcc6.3)这里就有点疑惑了,看INT32_MIN的宏定义为
从寄存器的角度上看计算机是怎样处理两个整形变量a,b的操作:

if(ah=pa1)这个有问题给函数参数赋值,並检验是否非空这时要干嘛!,空间紧张所以就重用参数??

PS:在头结点包含数据的链表中传入头结点指针,头结点是删除不掉的

C++,还可以用指针的引用作为参数

这么写,虽然没有错误也不要这样做。

并不能删除头结点这是参数错误,没有办法修改的!

一闪並不能说明程序错误但是你这个程序显然是有问题的!

想叫它不闪,程序结束前放个输入语句,

这样程序没错误输出就可以看到了,看不到多半是出错了(无限循环,或出错退出);

 
 if(ah==pa1){pa1=pa1->next;free(ah);ah=pa2=pa1;}else{pa2->next=pa1->next;free(pa1);pa1=pa2->next;}/*malloc分配的内存
要用free释放,才真正删除了结点!
链表删除有两个步骤1)把要删除的结点從链上取下并把链表重新连成一条链2)释放要删除结点占用的内存*/
PS:手机不方便,周一给你调整下程序!这个程序有多处问题需要一一解決!如果你仔细思考一下,其实自已也能解决!
这里主要有以下问题
1)删除结点的方法
2)NULL指针没有数据,必须先判断才可以使用->运算符!
3)是刪除1个相等数据还是删除所有相等数据、
4)每删除一个数据都要从表头找起,除非有规律例如两个链表都是升序或降序排列的链表。
这些都解决了自然就把程序写出来了!
另外,删除不带空头结点的链表有一个问题,c为值传递如果把头结点作为结点指针传入函数,刪除头结点很困难因为头指
针的值不能改变!如果只有一头结点就彻底没有办法了!否则可以用一个变通的办法!把下个结点的数据搬箌头结点,然后删除头结点的下个结点!虽然可以把新的头结点传出去(如果删除了所有数据或头结点,)可是原链表还是个野指针没法哽改了!
 

1. create函数最后一个申请出来的内存,你读取num为0后没有释放,内存泄漏;

2. Del函数里比较逻辑有问题。应该是用a里面的一个结点和b里面铨部比一遍后再用a的下一个结点跟b的全部比,一直到结束另外Del函数一开始最好增加ah和bh的空指针判断处理,弥补逻辑漏洞

 

我要回帖

更多关于 C语言图 的文章

 

随机推荐