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

问题描述

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

#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("链表的长度为:%dn",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)函数只要一取消注释就要报错

解决方案

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

解决方案二:

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

解决方案三:

  1. 你没改变p,当然是死循环了
  2. c没有bool关键字

解决方案四:

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

时间: 2024-08-28 07:14:42

数据-我觉得我见鬼了,请大神帮我看看我到底是不是真的见鬼了,现在凌晨三点了的相关文章

数据转化-java的数据转换问题,请大神帮我看一下

问题描述 java的数据转换问题,请大神帮我看一下 今天看到书上讲到数据转化,我看不懂,拍给大家,请大家帮我解释一下,谢谢 解决方案 在用system.out.println时会自动转换,你也可以用(float)进行强制转换 解决方案二: java中,两个数运算时,如果类型不同,自动会转成类型相同,如果是int和float计算,则两个数都会转成float后再计算.第一张图a/b会有小数 第二张图 a,b都是整型,除法后a/b取整再转float.所以小数都是0,是因为是a/b除后舍去了小数. 解决

c-程序会运行,可是有一些数据代入是错误的,请大神们指点一二!如下所示

问题描述 程序会运行,可是有一些数据代入是错误的,请大神们指点一二!如下所示 问题描述 给定 N 个整数,请你找出这 N 个数中最大的那个和最小的那个. 输入格式 第一行包含一个正整数 N .(1 ≤ N ≤ 10000). 第二行为 N 个用空格隔开的整数,每个数的绝对值不超过 1000000. 输出格式 输出仅一行,包含两个整数 x,y,x 表示 N 个数中的最大值,y 表示 N 个数中的最小值.x,y 之间用一个空格隔开. 样例输入 4 2 0 1 2 样例输出 2 0 #include

工具-如何实现这样一个数据列表,请大神帮帮忙

问题描述 如何实现这样一个数据列表,请大神帮帮忙 各位大神,小弟最近需要弄个数据列表,具体需求是从数据库中查询数据生成表格,这个数据时一行一行的.表格生成之后需要按照某一列的单元格内容进行分组,分组之后的数据可以折叠展开以方便查看(类似excel中行组合). 取数我还勉强能弄,但是前端分组+折叠/展开的功能实在是不会弄(原谅我是个小白,弄不出来就要失业了).请问有什么好的思路或者是现成的工具可以实现这个需求? 解决方案 什么语言什么平台没有说,假设你要的是web的http://download.

一个关于数组溢出的问题,请大神帮小弟解惑

问题描述 一个关于数组溢出的问题,请大神帮小弟解惑 vc6.0环境,代码很简单,但是不管你输入的数组n是多大,a[n]的值都是n,按理说不是最大就到n-1了吗,为什么不报错? #include using namespace std; int main() {int i;int a[11]; int*p=a; for(i=0;i<=10;i++) a[i]=i; cout<<a[11]; return 0; } 解决方案 你试试int *a = new int[11];数组实际上放在栈内

方法-按年龄段查询的问题 请大神帮

问题描述 按年龄段查询的问题 请大神帮 oracle数据库中存了 字段age 数据类型varchar2 值为 1天 2天 ... 30天 1月 2月 ... 12 月 1岁 2岁 ... 100岁 (值不连续且无序) 现要在jsp页面查出某一年龄段内的所有数据 求方法 解决方案 sql语句用 select * from 当前表 where age between 年龄段1 and 年龄段2, 解决方案二: 先加个字段age2,用下面的语句统一格式为 '000岁00月000天',就可以查了 UPD

线程-请大神帮我看下这部分代码怎么写?谢谢!很急

问题描述 请大神帮我看下这部分代码怎么写?谢谢!很急 如图所示,我把基本通讯功能已经实现,但是我想实现下图中红色圈中部分的功能,自动发送跟数据格式的功能怎么实现啊,希望发送端跟接收端都可以实现这个数据格式的功能,谢谢 整体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System; using System.Data; usin

递归算法-用栈存储指向一个二叉树结点的指针,中序遍历时,进行调试时总卡在GetTop()函数,请大神帮我看看

问题描述 用栈存储指向一个二叉树结点的指针,中序遍历时,进行调试时总卡在GetTop()函数,请大神帮我看看 利用栈存储指向一个二叉树结点的指针,可不知为什么,在进行中序遍历时,进行调试时总卡在GetTop()函数这里,请大神帮我看看 #include "stdio.h" #include "malloc.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE

android 中导入数据库,代码一处错误。请大神帮我看看

问题描述 android 中导入数据库,代码一处错误.请大神帮我看看 解决方案 首先你要确定这个cothinkganbu这个文件在哪儿呢,如果你放在了assets里面那就不是这样调用获取资源了,红线处说明的是找不到这个资源,所以你检查一下看是什么情况. 解决方案二: 清理一下工程看看.... 解决方案三: 请大神帮我看看这段代码

android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下

问题描述 android http POST请求方式向服务其发送数据不成功 贴出代码求大神帮解决一下 new Thread(new Runnable() { @Override public void run() { String szSrc = ""abcdefghijkl123456789123"" ; byte[] encoded = ThreeDes.encryptMode(keyBytes szSrc.getBytes()); try { /* Strin