2 lsh1475546247 lsh1475546247 于 2016.02.06 03:45 提问

我觉得我见鬼了,请大神帮我看看我到底是不是真的见鬼了,现在凌晨三点了

#include
#include
#include

typedef struct Node ND;
struct Node{ //结构体
int data; //数据预,存放结构体的数据,哲理简单化,假设只有一个data
struct Node * pNext; //指针域,用来存放下一个节点的指针或者上一个节点的指针或者其他节点的指针,这里简化只存放下一个节点的指针
};
/*函数声明*/
//void traverse_list(ND * pHead);
ND * create_list(int len);
void drop(ND * pHead);
//bool is_empty(ND * pHead);
int length_list(ND * pHead);
//bool insert_list(ND * pHead,int,int);
//bool delete_list(ND * pHead,int,int *);
//void sort_list(ND * pHead);

int main(){ //主方法作为测试方法
int len,val;
ND * pHead;
ND * p=NULL;
printf("请输入要创造多少个节点:\n");
scanf("%d",&len);
pHead=create_list(len);//创建一个头结点,获得其地址

printf("链表的长度为:%d\n",length_list(pHead));
p=pHead; //让p也指向头指针
while(p->pNext!=NULL){
printf("大半夜真的见鬼了\n");
}
printf("添加完毕!\n");
drop(pHead);
return 0;
}

/*
根据用户输入的长度来创造链表,但是这个链表是空链表
*/
ND * create_list(int len){ //创建链表,返回链表头结点的地址
int i;
ND * pNew=NULL;
ND * pTail=NULL;
ND * pHead=(ND *)malloc(sizeof(ND)); //创建头节点,把首地址给指针变量pHead,头结点不存放任何数据,但是头结点的指针域要指向后面创造的节点
if(pHead==NULL){
printf("动态分配空间失败!");
exit(-1);
}
pHead->pNext=NULL; //将头结点的指针域放空
pTail=pHead; //此时pTail也指向头结点了
for(i=0;i pNew=(ND *)malloc(sizeof(ND));
if(pNew==NULL){
printf("动态开辟空间失败\n");
exit(-1);
}
pTail->pNext=pNew;
pNew->pNext=NULL;
pTail=pNew;
}

return pHead;

}
void drop(ND * pHead){ //释放链表

ND * t=NULL;
while(pHead->pNext!=NULL){
    t=pHead->pNext;                 //t指向下一个节点
    free(pHead);                    //将pHead指向的节点删除释放
    pHead=t;                        //让pHead也指向下一个节点
    t=NULL;
}
//free(pHead);

}
//bool is_empty(ND * pHead){ //为什么要报错???
// if(pHead->pNext==NULL){
// return true;
// }else{
// return false;
// }
//}
int length_list(ND * pHead){ //链表长度
int num=0;
ND * p=pHead;
while(p->pNext!=NULL){
p=p->pNext;
num++;
}
return num;
}
这是用C写的链表。
见鬼的地方是主函数中的while函数,条件是p->pNext!=NULL。头结点指针域不为空。我已经测试了,链表除了最后一个的指针域为空其他都是有地址的。可是这个循环就硬是死循环了。我试着创造了两个节点和三个节点或者五个,用输出函数看了,最后一个节点地址都是00000000,可是while就是死循环。现在夜深了。外面有人在哭,我怀疑我见鬼了

。还有bool is_empty(ND * pHead)函数只要一取消注释就要报错

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.06 07:35

不是见鬼了,而是地震了。
while(p->pNext!=NULL){
p=p->pNext;
}

YXTS122
YXTS122   2016.02.06 11:30

学习了。。。。。。。。。。。。。。。。。。

xyz347
xyz347   2016.02.06 07:19
  1. 你没改变p,当然是死循环了
  2. c没有bool关键字
91program
91program   Ds   Rxr 2016.02.06 09:00

一个简单的死循环,解决的方法是进入调试模式,然后检测p的值。这样在进入while后,你会发现p的值一直不变,而不是你想的每次后移到next。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
让学历见鬼去吧----20世纪最狂妄的校园演讲
爱因斯坦说过,“我学习中等,按学校的标准,我算不上是个好学生,不过后来我发现,能忘掉在学校学的东西,剩下的才是教育”?。我想,教育的真正目的不是制造文凭,而应当是解放一个人的脑袋。      美国Oracle的CEO拉里.埃力森(Larry Ellison)在耶鲁大学2000届毕业典礼上的演讲,相信许多人都读过,现附全文如下。(现在高考刚过,对于那些考试不理想的同学你们看后将有何感想。     耶
查看csdn我的收藏
你懂得。http://my.csdn.net/my/favorite
人生应该要有梦想,万一见鬼了呢?!
人生应该有梦想,万一见鬼了呢?!
女科学家病重见鬼, 儿诵金刚经现奇迹
此文的作者为“慈光居士”,他与父母都是科学工作者,父母还是中国科学院的科学家。该作者在佛法的感召下,皈依了佛门,并通过自己诵金刚经的殊胜功德,奇迹般地拯救了自己”一脚已入鬼门关“的母亲,还让父母双双走上了念佛修行之路。故事真实可信之处在于,儿子为母亲念金刚经和母亲重病时见到恶鬼两件事都没有告诉过任何人,而在不可思议的事例发生后都讲出了原委,得以共证佛法的千真万确。以下是他的文章—— [慈光居
“小雷,听说你大学的专业是计算机科学与技术?”“是的,领导。”“那好,去帮我搬下电脑。”
“小雷,听说你大学的专业是计算机科学与技术?”“是的,领导。”“那好,去帮我搬下电脑。”
最近玩喂喂我的小仓鼠吧,玩上瘾了……
最近玩喂喂我的小仓鼠吧,玩上瘾了……是该大神制作的,拷贝一下里面的http内容就可以了……但是csdn不清楚为啥不行,好烦啊。http://abowman.com/google-modules/hamster/#gadgetSWF
看看哥是如何不花钱上了这么多妹子的,粉妹子、黑木耳统统拿下……
3月份的某一天,我在某论坛注册了帐号,并发了一贴开蒸    内容也很实际,也无欺骗,写了自己的岁数,家里有房无贷,自己开奥迪A4    留了qq和msn,短短一个星期,加我的某论坛女超过百人....    我在msn里建立了3个组,未见面的某论坛女,漂亮的某论坛女和恐龙群    大部分某论坛女其实人都还不错,不是特别的物质    但少部分也会一开始就祖宗八代问个清楚,这种女人很反
01-在线挑战详细攻略-《我很简单,请不要欺负我》 http://bbs.ichunqiu.com/thread-1783-1-1.html (出处: i春秋社区-分享你的技术,为安全加点温度)
系列文章: 02-在线挑战详细攻略-《网站综合渗透实验》 03-在线挑战详细攻略-《又见DZ,我能拿你怎么办》 04-在线挑战详细攻略-《2015中国网络安全大赛:Reinstall真题》 05-在线挑战详细攻略-《2015中国网络安全大赛:框架漏洞真题》 Setp 0 实验环境 操作机:Windows XP [172.16.11.2] 目标机:Wi
见鬼啦 见鬼啦
我的Extjs页面赋值出现了很奇怪的问题,见鬼啦,见鬼啦,头大。  怎么解决呢 。。。。 
CSDN找到:我关注的人
一、进入“个人主页”, 二、找到“我的关系”,即可。 如图: