如何在 C/C++ 中的向量中保存链表
how to save a linked list in a vector in C/C++?
我正在尝试使用 while 语句将链表保存在向量中,数据正确保存在向量中,但函数永远不会退出 while 语句,这是代码的一部分:
typedef struct node *contractionIndices;
contractionIndices p, head;
contractionIndices getnode();
void insafter(contractionIndices p, int indexA, int indexB, int indexR, int indexS);
p=p->sig;
i=0;
while(p!=NULL)
{
contIndices[i*4] = p->indexA;
contIndices[i*4+1] = p->indexB;
contIndices[i*4+2] = p->indexR;
contIndices[i*4+3] = p->indexS;
printf("Contraction C (%d): (%d,%d|%d,%d) n", i,
contIndices[i*4],
contIndices[i*4+1],
contIndices[i*4+2],
contIndices[i*4+3]);
p=p->sig;
i++;
}
printf("I'm outn");
编辑
这是斯特鲁克
struct node{
int indexA;
int indexB;
int indexR;
int indexS;
struct node *sig;
};
而这个插入功能:
void insafter(contractionIndices p, int indexA, int indexB, int indexR, int indexS)
{
contractionIndices q;
if(p==NULL)
printf("ERROR, list emptyna");
else
{
q=getnode();
q->indexA=indexA;
q->indexB=indexB;
q->indexR=indexR;
q->indexS=indexS;
q->sig=p->sig;
p->sig=q;
p=p->sig;
}
}
内存分配:
contractionIndices getnode()
{
contractionIndices p;
p=(contractionIndices)malloc(sizeof(struct node));
if(p==NULL)
printf("Error: insuficient memoryan");
return p;
}
谢谢你的帮助
您提供了以下信息:
"函数永远不会退出 while 语句"
由于您没有发布将sig
指针设置为 NULL 的位置,因此开始执行此操作的第一个位置是在此处创建节点时:
contractionIndices getnode()
{
contractionIndices p;
p=(contractionIndices)malloc(sizeof(struct node));
if(p==NULL)
printf("Error: insuficient memoryan");
memset(p, 0, sizeof(node)); // this zeros out p
return p;
}
这可能无法修复所有错误,但您肯定没有在创建节点时将sig
指针设置为 NULL。
相关文章:
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 如何在数组和向量 c++ 中存储和保存输入
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- C++ 将地址保存为字符串的向量转换为新的向量
- 使用 for 循环是否比在 C++ 中将内容保存在向量中更快?
- 将所有正则表达式匹配项保存在向量上
- 如何在向量中保存位置以供以后插入?
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- 将局部变量保存到全局向量中,为什么离开局部范围后可以得到这些局部变量?
- 为什么可以访问在 for 循环中创建的向量,这些向量被保存到向量向量中
- 如何诊断保存和加载位向量(std::vector)的奇怪行为<bool>?
- 如何创建一个function_list<>类来保存具有相同模板语法的 std::function<>s 向量?
- 如何保存枚举类型的向量的向量
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 我可以将某些对象的指针保存在向量中,而不是将指针调用内联函数
- 分类一个向量,该向量由该类中的成员字符串保存对象
- 如何从二进制文件中读取双精度并将其保存在向量中
- C++将类对象的向量的向量保存到文件中
- 将对象向量保存到C++中的文件中
- 将字符串向量保存到磁盘不起作用