lsh1475546247 2016-02-05 19:45 采纳率: 0%
浏览 1332

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

#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)函数只要一取消注释就要报错

  • 写回答

3条回答 默认 最新

  • threenewbee 2016-02-05 23:35
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能