链表插入数据:为什么在成员函数insert中还要判断指针head是否为空指针?

在“list”这个类中的“list(){head=NULL}” 不是已经将“head”定义为空指针了吗?为什么在定义它的成员函数insert的时候还要判断是否为空指针?

class list
{
    node *head;
    public:
        list(){head=NULL;}
        void insertlist(int adata,int bdata);
        void deletelist(int adata);
        void outputlist();
        node *gethead(){return head;}
};
void list::insertlist(int adata,int bdata)
{
    node *q,*p,*s;
    s=(node*)new(node);
    s->data=bdata;
    p=head;
    if(head==NULL)
    {
        head=s;
        s->next=NULL;
    }
}
0

查看全部1条回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
详解this指针--为什么空的对象指针可以调用成员函数
引题class A{ public: void function() { cout << "I can run" << endl; } };int main() { A* pa = NULL; pa->function(); system("pause"); return 0; }C++中,空指针是不能够使用的,然而空对象指针有
数据结构单链表中关于空指针的理解
数据结构单链表中关于空指针的理解 直接上题目: h 为不带头结点的单链表的头指针,现在需要将 x 结点插入到单链表的最后,作为最后一个结点,要求写出相应的算法。 捕获.PNG 这是一道非常基础的题目,我写的算法如下: while( h ){ h = h -&amp;amp;amp;gt; next ; } h = s ; s -&amp;amp;amp;gt; next = null ; 写完之后觉得很简单嘛,自我感觉良好,乍一看...
为什么C++调用空指针对象的成员函数可以运行通过
先看一段代码:#include &amp;lt;iostream&amp;gt; using namespace std; class B { public: void foo() { cout &amp;lt;&amp;lt; &quot;B foo &quot; &amp;lt;&amp;lt; endl; } void pp() { cout &amp;lt;&amp;lt; &quot;B pp&quot; &amp;lt;&amp;lt; endl; } void Funct
C++类对象空指针访问成员函数(静态绑定)
题目:class A{ public: void test(){printf("test A");} }; int main(){ A*pA=NULL; pA->test(); }结果是输出“test A”而不是程序崩溃,原因如下:一种解释: A*pA=null; pA->test();//当调用成员函数时,只是将实参null传给this指针test成员函数
C++ 判断指针为空的写法
C++之父的C++圣经《C++程序设计语言 特别版》中说: 大家不要听某些人说判断指针是否为空用(p==NULL)或(p!=NULL)的格式,C++之父认为这样写是不好的,提倡直接写(p)或(!p)的形式。 在win32开发中,if ( NULL == p )是极好的写法。但不要写成:if ( p == NULL )  C++之父主要是反对使用“NULL”,因为在某些特殊的开发环境叫,“N
对象指针为NULL,为什么还是可以调用成员函数
C++中,空指针是不能够使用的,然而空对象指针有时候却能够调用成员函数。 先来看一下以下程序: #include #include using namespace std; class A { public: static void f1(){ cout<<"f1"<<endl; } void f2(){ cout<<"f2"<<endl; } void f3(){ c
C/C++ 下如何判断空指针
今天在写C++代码,遇到一个很奇怪的问题,在Android JNI下判断一个指针是否为空,但是发现 (NULL == ptr )或者 (nullptr== ptr )表达式均为真,然而ptr是刚new出来的,也有地址值。 这就很让人费解了,不信邪,写了这么多年的代码了,这种代码怎么看怎么没问题,同样的代码到x86环境下跑一次,却得到了我想要的结果,真是让人凌乱啊。。。 最后只能祭出了我
关于单链表函数操作中return head的意义
return head; /*返回创建链表的头指针 */  头指针就是指向链表的首地址,返回首地址就可以对联表进行相关操作,至于头指针里面有没有值,看你自己放不放,无所谓的
判断指针是否为空
这两天一直迷惑一个问题,就是如何判断指针是否为空,通常有如下两种方式(假设p为指针): if (NULL == p) { // ... } if (!p) { } 到底哪种方式好呢?这个问题应该从两个方面去考虑,本文就是围绕这两个问题展开的,仅限于C语言。 它们在语义、编译等环节上是否等价? 它们在可读性、可维护性等上面是否等价? 一、是否存在隐式类型转换? 《C 程序设计语言
空指针可以调用成员函数?
有下面一个简单类:class A { public: void fun(){ cout << "I'm class A"<<endl; } };用一个空指针调用上面的fun函数:A* pa = NULL; pa->fun();讲道理,空指针应当是”不可用”的,自然也不能调用其成员函数了,但是结果却出乎意料地正确执行了: 为什么??其实,关键在于每个成员函数的this
3、OC nil与null的区别【空指针与野指针】
1> 利用野指针发消息是很危险的,会报错。也就是说,如果一个对象已经被回收了,就不要再去操作它,不要再尝试给它发消息。 2> 利用空指针发消息是没有任何问题的,因为nil是可以回应消息,但使用null就不行,也就是说下面的代码是没有错误的: [nil setAge:10];
c++中使用空指针调用成员函数的理解
使用空指针调用成员函数会如何? 举个例子:base是基类,里面有两个函数:non-virtual func2 以及 virtual func1; derived是派生类,使用public继承自base,里面有四个函数:virtual func1,non-virtual func3,non-virtual func4以及static non-virtual func5,特别注意:func4调用了...
置空指针调用成员函数问题
问题由来:new一个自己的类,用完后delete指针,置空NULL 后,打断点指针为空,但是依旧可以调用出类里的函数,且编译通                    过了; 学习参考路径:    点击打开链接 总结:在java,Python语言中是做不到这样的,但是C++中可以,原因是其绑定方式不一样;  java,python是动态绑定,也就是说,代码实现的时候是用到什么找什么,比如用到成...
为什么要返回链表头指针()
访问链表的时候,都是从头结点开始的,当你用完的时候也要回到头结点,这是通用的方法,如果不,有下列两种情况。 1.如果不返回呢,这个链表就无法用了,应为无法抓住一个节点,是无法顺藤摸瓜,找到其它元素了。 2.如果返回其它节点呢,如果是循环链表或者双向链表,这是可以访问的,虽然程序可读性不好,但要是单项链表呢,不返回头结点,后面的就无法再访问了,所以,统一下标准,都返回头结点,方便学习和使用。 追问 ...
关于java中判断为空出现空指针异常的问题
判断为空的问题 java中如果一个值xx可能为空,则不可用  xx.equals("")  或 xx.length()  等   因为一旦为空  则这个值后再接方法或属性,就会出现空指针异常。 可用  "".equals(属性)   "".isEmpty(属性)   代替 判断是否为空  ---  if("xx".equals("")  ||  xx==null){ 为空操作 }
mybatis 传入的属性值为空时 报空指针异常
mybatis 传入的属性值为空时 报空指针异常 背景:在使用mybatis进行insert操作的时候,有个字段为null,插入时报了空指针异常的错误;在网上查找了方法,但并未解决。 网上的解决办法 1.在mybatis配置文件中加入以下配置: 2.在*Mapper.xml文件中,加入每个属性的类型: #{middleInitial,jdbcType=VAR
Delphi 判断指针为空的函数 Assigned
1.根據 Delphi 指令參考手冊中 說明: Assigned 函式在參數不為nil時傳回True,表示指针已经指到某个内存地址,这个内存地址可能是一个对象地首地址,也可能在函数或过程中,声明一个指针变量,没有赋值为nil ,无乱的指向某处,这两个种情况,Assigned(指针变量)都不为nil ,  函数放回True; 而參數為nil時則傳回False。 Assigne
LinkList 单链表的实现
LinkList.h#include "stdio.h" #include "math.h" #include "malloc.h" #include "stdlib.h"//typedef int DataType;//LinkNode是链表的结点类型,LinkList是指向链表的指针类型 //如果定义了 LinkList L;则定义了一个链表,L指向该链表的第一个结点 //不带头结点,链表为空,
c/c++下指针判空失效问题 讨论
今天在写c的时候,好久不写,容易遇到指针问题!!!(这是我刚开始写的内心独白)可是。。。真的遇到了!!!刚开始以为是我写的判空错误,我刚开始是这样写的:p-&amp;gt;next==NULL 然后一直以为是我其他地方逻辑的问题,调试发现一直pop栈的时候会有问题,就是老是栈为空了还在pop。好不容易查到博客说要用if(p-&amp;gt;next)或着if(!p-&amp;gt;next),可是我不知道为什么呀!!!后...
内核中判断返回指针是否错误的方法:使用IS_ERR或者IS_ERR_OR_NULL
内核中判断返回指针是否错误的方法:使用IS_ERR或者IS_ERR_OR_NULL。 参考include/linux/err.h #define MAX_ERRNO  4095   #ifndef __ASSEMBLY__   #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)   static in
链表操作之插入数据
链表插入操作
hive0.13 insert空指针问题记录
问题背景:INSERT...VALUES is available starting in Hive 0.14;但我们在hive0.13中希望简单插入数据然后测试; 然后建表,表结构: create table IF NOT EXISTS testj(       f1      string,       f2        string)       partitioned by (day...
判断一个指针是否为空,abort()、assert、抛出异常的使用、ASSERT与VERIFY宏的区别
判断一个指针是否为空//vs20051. abort()#include//...if(!ptr) abort();2. assert#include//....assert(ptr!=0);//assert(xx);当xx为非零值时,无异常,当xx为零食异常中断3. 抛出一个异常if(!ptr)  throw "Panic: prt ==0";4.ASSERT与VERIFY宏的区别
解析#define NULL ((void *)0)——野指针,空指针和 void*
在编写程序时,我们经常会遇到这样的语句:#define NULL 0 #define NULL ((void*)0)空指针是一个被赋值为0的指针,在没有被具体初始化之前,其值为0. NULL 是一个标准规定的宏定义,用来表示空指针常量。以上两种定义都可以用来定义一个空指针。那么问题来了,我们为什么要定义一个空指针NULL?下面先了解一下野指针一:野指针“野指针”不是NULL指针,是指向“垃圾”内
单链表存在环的问题
问题给定一个单链表,只给出头指针header 判断链表是否存在环 求环的长度 求环的连接点 求带环链表的长度 // 简单的链表定义及生成带环链表函数 typedef struct Node { struct Node *next; } node;node* makeNode() { node * pNode = (node*)malloc(sizeof(node
C++中当对象指针为空时,虚函数和非虚函数的调用情况
当我们定义一个类的对象为空时,这时我们调用该对象中的函数,我们会发现当调用非虚函数时仍可以正常调用,而如果要调用虚函数则会报错。如下示例: class Progress { public: void print(int L) { cout << "L = " << L << endl; } }; int main() { Progress *a = NULL; a->prin
关于空指针(指针指向为NULL)和void类型的指针的理解
正在学C,书上老说空指针,
二叉链表树中结点个数 与空指针个数 二叉树的边数的关系
二叉链表树中结点个数 与空指针个数 二叉树的边数的关系
被释放的指针,空指针,void指针 辨析
做了一道题,虽然问题的侧重点不在于指针,但是引发了我对一些指针相关内容的思考,发现自己没有真正地去认真思考这些问题……在此做个了断。 被释放的指针 当动态内存分配的时候,用完指针,就要将其释放掉,delete和free函数一样,不修改它参数对应指针指向的内容,也不修改指针本身,只是在堆内存管理结构中将指针指向的内容标记为可被重新分配。就是告诉系统这个地址的内存我已经不用了,系统可以重新分配给别...
判断链表是否有环为什么快慢指针一定会相遇
判断链表是否有环这个问题应该已经算“经典”问题了,就不说了,百度下一堆一堆的。 那么为什么快慢指针一定会相遇? 首先两者要相遇,肯定是在那个环里面(比如最好情况慢的指针一踏入环就和快指针相遇)。 然后我们要明确快慢指针的速度差为1,两者每移动一下,距离减1,而这个环的最小划分单位就是1,所以显然会相遇。
已知head为单链表的表头指针,链表中存储的都是整形数据,实现下列运算的递归算法
已知head为单链表的表头指针,链表中存储的都是整形数据,实现下列运算的递归算法: (1)求链表中的最大值。 (2)求链表中的结点个数。 (3)求所有整数的平均值。
getContentResolver()空指针原因及处理办法
getContentResolver()空指针原因及处理办法
链表添加函数中为什么要用指向链表指针的指针
在看书的时候有个函数往链表里添加节点,代码中考虑到可能给出的头指针为空,并做另外一些处理。具体代码如下: #include #include using namespace std; struct ListNode { int val; ListNode* next; }; void AddToTail(ListNode** pHead, int value); int m
如何判断一个字符串指针是否为空(c)
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; void main() { char *str = (char*)malloc(sizeof(char)*10); //分配地址空间 gets(str); //输入 if(str[0]!='\0') //由于字符串以'\0'结尾,故可以这样来判断 ...
面试题:不知道Head(头节点),想要删除链表中的某一个节点
这是一道不是很新的面试题,最近在刷题时遇到了。网上有些说法我觉得不够严谨,在这里说一下自己的见解。 这里不考虑双向链表了,因为双向链表是可以很轻松做到的。 答案都是比较统一的: 将所要删除的节点的后一个节点的值copy到当前节点来。删除后一个节点。 看上去貌似挺对的,思路也挺新颖。那么,如果我要删除的这个节点没有后一个节点呢??? 我搜过很多答案,都没有给出。 以下是个人观点: ...
C++指针、空指针、野指针使用的一些总结
野指针野指针:未被初始化的指针,野指针所导致的错误和迷途指针非常相似,但野指针的问题更容易被发现。空指针空指针:就是一个被赋值为0的指针,它不指向任何的对象或者函数。1、使用指针的第一件事就是需要看这个指针是否是空指针(坚决不能使用空指针,否则程序就会蹦。意思就是:为一个指针赋值为空指针是不会报错的:char*p;但是在使用的时候一定要判断是否为空指针(即该指针有没有指向),不为空才能操作)判断空...
C指针错误(3)-链表的尾指针要赋值NULL
下面是建立一个链表和打印链表的函数 输入0为结束#include <stdio.h> #include <stdlib.h>struct ListNode { int val; struct ListNode *next; };struct ListNode* creat_list() { struct ListNode *head=(struct ListNode *)
智能指针之使用空指针错误
使用空指针
oracle先判断数据是否存在再插入
有时候用oracle的数据库,插入数据的时候需要判断一下。比如,每天每人只能写一条。 在插入的时候就要先做个判断,查一下是不是当天有此人的操作记录。 就要先 select count(*) from xxx 然后再执行insert,其实不需要这样子,oracle内置在insert语句中判断的,如下sql: insert when (not exists (select 1 from
Linux内核指针判断
内核指针判断 https://blog.csdn.net/jasonchen_gbd/article/details/44968395 https://blog.csdn.net/xxu0123456789/article/details/6339625 #ifndef _LINUX_ERR_H #define _LINUX_ERR_H #include &amp;lt;linux/compile...
文章热词 去块滤波边界像素判断 em算法中的隐变量问题 机器学习 机器学习课程 机器学习教程
相关热词 server的安全控制模型是什么 sql ios获取idfa android title搜索 为什么学python 为什么要学习python