我只学过C中的链表,是在结构体中有数据元素和结构体指针。如果在C++中需要将对象用链表的数据形式组织起来,两者之间的关系是什么样的?另外有没有什么好的教材或者例子推荐的?
你的意思是不是我在类的数据成员里面加一个类的指针就可以把该类对象的用链表的方式连接起来了?然后对数据进行操作的时候就把头结点也就是第一个对象的指针穿进函数里,然后对不同的对象进行操作?
追答是的,但是如果成员是私有的,外部函数将无法访问,需要另外写接口函数。
所以一般会把有关的链表操作函数全部写成类的成员函数。
最好是把head指针放在另一个类里,用这个类的成员函数来实现功能。
头指针放在另一个类里我不是很理解。假设我建立了一条客户类的对象链表,头结点按你的描述是什么状态呢?不放在自己这个类的第一个对象里吗?请解释一下哈,谢谢!
追答比如你已经用C语言实现了一个链表,然后你在C语言中需要用各种函数来操作这个链接。
你可以将这个链表的头放在一个类list中,然后把所有的函数写成类的成员函数,包括遍历,添加,删除。然后在使用这个类的时候就可以完全使用成员函数来操作,而不用管指针的细节。
而如果你的链表节点也是用类写的话,每个节点的成员结构最好是一样的,最好不要把头放在某一个节点中。
c++ MFC 里的链表问题(内详)
链表是一种数据结构,就像是一个一个的珠子串起来的链子,每个珠子就是一个结构体变量(当然这是C语言中的说法,要是是C++的话,每个珠子就是一个对象了),这种数据结构可以很方便地的访问每个元素,一般它是与数组相对的,数组是串行的,按照索引来访问元素,而链表是靠结构体中存储的下一个元素的...
c++里面的链表结构到底是怎样的,我一点都弄不懂
定义一个结构体或者类 作为节点的类。然后用这个类new出一个一个的对象,就可以作为链表的节点了,然后用节点的指针域的值 来连接这些节点 就成了链表,网上有程序的,说不明白的 自己多找点程序 ,然后写。我以前不明白链表,然后我就用链表写了一个贪吃蛇。然后就明白了 ...
c++ 链表,,求指导,程序崩溃,line:1044
链表的最后一个节点的next的值,是否设置为NULL了,如果没有设置,到了最后一个节点的时候,就会出现崩溃.你的链表中的每个节点的next值,是否都对了,如果有任一个节点的next没有指向有用的节点的话,就会访问不被允许访问的内存,导致崩溃.考虑下在进入循环的第一次是否就有问题,因为循环里,并没有判断p...
C++中链表初始化
结构体中 typedef struct Cwow{string name;string sex;string profession;struct Cwow * next;}Cwow;string是C++的东西。而这里 p1=p2=(Cwow *)malloc(sizeof(Cwow));malloc是纯c的东西,如此混用当然出异常,请改为new:p1=p2=new Cwow;这样就好了,所有用malloc的地方都该为new ...
c++ 链表,,求指导,程序崩溃,line:1044
1.链表的最后一个节点的next的值,是否设置为NULL了,如果没有设置,到了最后一个节点的时候,就会出现崩溃.2.你的链表中的每个节点的next值,是否都对了,如果有任一个节点的next没有指向有用的节点的话,就会访问不被允许访问的内存,导致崩溃.3.考虑下在进入循环的第一次是否就有问题,因为循环里,并没...
c++链表栈问题
1.建立抽象模型,说起来这件事得追溯到C++本身的结构上:从广义上看,类是一个数据操作集合体,即使数据结构也不外乎如是。那么我们必须知道栈需要什么——这是一切问题的起点。数据结构是数据模型的实现,围绕数据为中心,操作为主要手段的语义模型。真正具体化到C++的类中,我们就是要确定储存结构(...
c++链表问题
答:所以你的答案是对的,但是要注意过程。还有 s->link = new Node;的话结构是什么样的?是[25 | ? ] 还是 [25 | ]--->[ ? | ? ]?问号代表不知道 答:S->link的值发生改变,指向了一个新的内存区域。如果r=s->link会是什么样的结构?答:链表的结构就是图中所示了,...
c++ 链表 删除各种情况节点问题。。。求教。。在线等。。。
一、结尾节点无法删除的问题,你可以想象一个只有三个节点的链表,结尾节点的ID=findid,开始时,p指向第二个节点,然后执行到第一个if时,由于p->next->ID==findid,于是执行第二个if语句,但是此时p->next->next是等于NULL的,所以删除节点的代码没被执行。二、当只有一个结点时,因为一开始定义...
怎样更好的理解C++中的链表的使用?
首先,我们把链表的节点比喻成火车的车厢。每节车厢的前面都有一个钩子,我们把这想想成指针,他用来连接上一节车厢。接着,使用尾插法的话,也就是先要找到火车尾,即链表的尾指针。然后把自己要加进去的车厢挂到火车的最后面。最后标记这节车厢为火车尾(把地址赋值给尾指针)。使用头插法的话,...
C++单链线性表的初始化问题
L->next=p; \/\/ █ 代表节点 <--- 代表指针 你那个程序指针是这样指的 █ <-- █ <-- █ <--- █for循环一结束就指向最后面的节点了 这样L是往后移动的, 所以输出时倒着输出 L-next存储p上次创建的节点的地址 p是后来创建的节点 所以后面节点总是指向前面的节点 ...