正在创建双链接列表.正在初始化前15个节点
Creating a double link list. Initializing the first 15 nodes
我的insert方法应该将p作为链接列表的第一个值(0),将15作为最后一个值。不过,当我打印出我的列表时,我必须通过p->succ而不是p-prev来打印项目,它会打印出15、14、13。。。。;这是对的吗?还是我的功能实现错了?
class Node{
public:
int value;
Node *succ;
Node *prev;
Node(int val, Node *s=NULL, Node *p=NULL)
:value(val),succ(s),prev(p){}
Node *insert(Node *p,Node *n)
{
if(n==NULL)
return p;
if(p==NULL)
return n;
n->succ=p;
if(p->prev)
p->prev->succ=n;
n->prev=p->prev;
p->prev=n;
return n;
}
int main(int argc, char *argv[]) {
Node *p= NULL;
for(int i = 0; i<=15; i++){
p = insert(p, new Node(i));
}
while(p){
cout<<p->value;
head=p->succ;
}
您在开始添加节点。所以很明显,最后添加的将是第一个。如果要按添加的顺序添加节点,则需要在末尾添加节点。
Node *insert(Node *p,Node *n)
{
Node * ptr;
if(n==NULL)
return p;
if(p==NULL)
return n;
ptr = p;
// Traverse to the end of the list
while(ptr->succ)
{
ptr = ptr->succ;
}
ptr->succ = n;
n->prev = ptr;
return p;
}
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 无法使用类型为"结构节点 *"的左值初始化类型为"结构节点 *"的参数
- 正在初始化:无法从'_Ty*'转换为 List<int,std::分配器<节点<T>>>:节点*
- 嵌套的C 常数数据结构,没有初始化列表或明确命名所有节点-VC 2012过早破坏了内部元素
- c ++作业 - 在链接列表代码中初始化节点的正确方法
- 使用公共类函数初始化节点类型<Type>指针C++
- 使用一些空指针初始化节点
- 通过C++应用程序初始化节点.js环境
- 初始化哈希映射C++构造函数中节点的值
- 如何初始化节点为矩阵的链表
- 使用 VS 2012 在构造函数中的树节点中初始化数组
- 如何在构造函数中初始化树节点中的数组
- 从.txt文件初始化列表中的节点
- 正在创建双链接列表.正在初始化前15个节点
- (C++)初始化 MOCAP 节点时出现 EINVAL 错误