为什么输出一个空指针链表时if(pHead==NULL){cout《“”;}这句不能执行

问题描述

为什么输出一个空指针链表时if(pHead==NULL){cout《“”;}这句不能执行

#include
using namespace std;

typedef struct Node
{
int age;
struct Node* next;
}LIST;

LIST* CreatList()
{
int data=0;
LIST* Phead=NULL;
LIST* Pm=NULL;
LIST* Pcur=NULL;
Phead=(LIST*)malloc(sizeof(LIST));
Phead->age=0;
Phead->next=NULL;

cout<<"Enter your data of node (-1 quit):";
scanf("%d", &data);
Pcur=Phead;
while (data!=-1)
{

    Pm=(LIST*)malloc(sizeof(LIST));
    Pm->age=data;
    Pm->next=NULL;
    Pcur->next=Pm;
    Pcur=Pcur->next;
    cout<<"Enter your data of node (-1 quit):";
    scanf("%d", &data);
}
return Phead;

}

void ListOut(LIST* Phead)
{
LIST* p=NULL;

if(Phead==NULL)   //如果改为if(Phead->next==NULL)则cout执行,why?
{
    cout<<"List is NULLn";
}
else
{
    p=Phead->next;
    while(p!=NULL)
    {
        cout<<p->age<<endl;
        p=p->next;
    }
}

}

void main()
{
LIST* p1=CreatList();
ListOut(p1);
system("pause");
}

解决方案

当输入-1后,head指针存储的是节点的地址,当然不是空的,但是head->next是NULL,

解决方案二:

在创建链表的时候,看你怎么输入,只要输入了非-1的数,则head不为空,如果只输入了一次-1,则head是空的。

解决方案三:

CreatList()里面无论是否输入数据都会为phead分配内存,实际数据是从phead的下一个节点开始存储的,phead中无数据只作为一个链表头用。

解决方案四:

时间: 2024-10-27 20:49:33

为什么输出一个空指针链表时if(pHead==NULL){cout《“”;}这句不能执行的相关文章

c-动态规划求最长公共子序列,存在多个解时只能输出一个。

问题描述 动态规划求最长公共子序列,存在多个解时只能输出一个. //求取所有的最长公共子序列 不知道代码哪里写错了,也只有一个币能悬赏,希望有空的大神们帮忙看看,纠结好久了不知道怎么改. #include using namespace std; const int X=100, Y= 100; //串的最大长度 char result[X+1]; //用于保存结果 int count= 0; //用于保存公共最长公共子串的个数 /*功能:计算最优值 *参数: x:字符串x y:字符串y b:标

c-使多个数移位输出,应用指针时出错,求解

问题描述 使多个数移位输出,应用指针时出错,求解 要达到的目的是输入n = 5, a = {1,2,3,4,5},m = 3时能输出 4 5 1 2 3 可在对指针所指的值赋值时出错,是语法问题吗?代码见下: /*移位m个整数*/ #include <stdio.h> #include <stdlib.h> int* a = 0, *a1 = 0; int* move(int* a,int n,int m); int main() { int n; printf("Ple

输出-写一个清理日志的脚本,要求每天早上8点执行

问题描述 写一个清理日志的脚本,要求每天早上8点执行 写一个清理日志的脚本,要求每天早上8点执行,打包压缩备份2天前的不在使用的日志并删除原文件,删除2天前的压缩日志,压缩文件命名要带日期:对于正在使用的日志,作清空处理.并输出详细日志 解决方案 用crontab,定时调用你的脚本0 8 * * * task.bat 解决方案二: 自动清理日志文件的shell脚本 #! /usr/bin/bashCap=df -k| egrep -e '/export/home'| sed -e 's/[=/%

objective c-添加NSMutableArray到另一个NSMutableArray中时数组值

问题描述 添加NSMutableArray到另一个NSMutableArray中时数组值 NSMutableArray *no1=[[NSMutableArray alloc]init]; NSMutableArray *no2=[[NSMutableArray alloc]init]; for(int i=0;i<3;i++) { for (int j=0;j<=i;j++) { NSString *no_str=[NSString stringWithFormat:@""

用c++做一个数组练习时遇到一个问题

问题描述 用c++做一个数组练习时遇到一个问题 我想将1到100之间的偶数存进数组,然后再通过数组将这些偶数输出,但是不知为什么运行结果发生了溢出,可否帮我看看原因?代码:#includeusing namespace std;int main(){ int oushues[50]; int cnt=0; for(int i=1;i<=100;i++) { if(i%2==0) { oushues[cnt++]=i; cout<<oushues[cnt]<<endl; } }

指针-寻找一个单向链表的中项,如果存在两个则返回前一个

问题描述 寻找一个单向链表的中项,如果存在两个则返回前一个 import javax.naming.spi.DirStateFactory.Result; public class LinkList { //头结点 Link first; //单链表构造函数 public LinkList(){ first = null; } //判断单链表是否为空 public boolean isEmpty(){ return (null==first); } //在单链表头插入新结点 public voi

在vs2010中利用mfc写一个连连看游戏时各种资源窗口啥的等都报“未声明的标识符”问题

问题描述 在vs2010中利用mfc写一个连连看游戏时各种资源窗口啥的等都报"未声明的标识符"问题 10C 写这个连连看游戏刚开始导入各种资源文件改好ID后运行正常,但通过进一步的编程后不知道为什么开始报各种"未声明的标识符"bug(可能中途改了一些什么设置.....)现项目最近运行的log文件如下: 生成启动时间为 2016/5/26 17:37:08. 1>项目"C:UsersAliezdocumentsvisual studio 2010Pro

java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了。。请大神指点

问题描述 java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了..请大神指点 java中输出一个日期排序,输出格式怎么变成Date@2c905b34. Date@3953c9c7类似的格式了..请大神指点 : Date[] days = new Date[5]; days[0] = new Date(2012123); days[1] = new Date(201515); days[2] = new Date(2008123); days[3] = new Date(

java-【求助】怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容)

问题描述 [求助]怎么用Java读txt文件,根据其中的条件,输出一个csv文件?(具体情况见内容) 用Java, 读txt文件(根据Eclipse软件的下方的console改成的log.txt) -------------------------------------- 例: [2013-08-26 10:45:45,042] ERROR does not exist. [2013-08-26 14:43:09,145] ERROR Certification failed. [2013-0