gpt4 book ai didi

c++ - 链表中的链表(二维链表?)

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:52 27 4
gpt4 key购买 nike

我有一个包含字符矩阵的 txt 文件(矩阵中每个位置有 1 或 2 个字符)

C P O Hr S A

N Hw N L Z R

W T O O Ta A

I O S S E T

是这样的。我设法做的是创建一个链表并将该矩阵的每个元素(分别)存储在该列表中。

struct DataNode{
char data[3];
struct DataNode *nextData;
};

void initNode(DataNode *head, char x[3]) {
for(int i=0; i<3; i++)
head->data[i]=x[i];
head->nextData=NULL;
}

void addNode(DataNode *head, char x[3]) {
DataNode *newNode = new DataNode;
for(int i=0; i<3; i++)
newNode->data[i]=x[i];
newNode->nextData=NULL;

DataNode *curr = head;
while(curr) {
if(curr->nextData==NULL) {
curr->nextData = newNode;
return;
}
curr = curr->nextData;
}
}

int main() {
char input[3];
if(in.is_open()) {
in>>input;
initNode(head,input);
for(int i=0; i<3; i++)
dieSide[i]=input[i];

while(in>>input) {
addNode(head,input);
}
in.close();
}
}

到目前为止,一切正常,我想我对此很满意。

我现在需要的是另一个链表,其中的元素仍然是 char[3] 类型,但首先必须有一个包含一行 6 个元素的列表,然后,另一个列表,包含所有这 6 个元素列表。

我希望我清楚地表达了我的愿望。

我正在考虑创建另一个结构,用 next 指针指向两个事件列表中的每一个,但仍然不确定这个想法。

你会如何推荐我去做这件事?

编辑

请帮我一点点...我已经重新实现了所有功能以适应您 (@Daniel) 建议的结构,并且它们似乎可以正常工作。但是,我需要一种方法来“重置”我想用于创建小列表的 DataNode*。这样我只打印整个矩阵的次数与文件中的行数一样多。我有的是>

char input[3];
int counter=0;
struct DataNode *head = new DataNode; //creates a list of all elements
struct DataNode *head_side = new DataNode; //want to use this one to create smaller lists
struct DieSideNode *head_die = new DieSideNode; //creates a list of smaller lists

if(in.is_open()) {
in>>input;
initNode(head,input);
initNode(head_side, input);
counter++;

while(in>>input) {
addNode(head,input);
addNode(head_side, input);
counter++;
if( counter == 6 ) {
initSide(head_die, head_side);
head_side=0;
}else if(counter%6==0) {
addSide(head_die, head_side);
head_side=0;
}
}
in.close();
}

此代码成功提取前六个元素,并将其作为列表的第一个元素,但随后它在那里停止工作。

最佳答案

我会给你一些开始的提示。如您所知,链表节点包含一些数据和指向列表下一个元素的指针。您所谓的“二维链表”实际上将简单地实现为链表的链表。列表中的每个节点都指向另一个链表。所以你需要定义一个新类型:

struct ListNode {
DataNode* dataRowHead;
struct ListNode* nextRow;
};

您正在尝试做的是将 6 个 ListNode 连接为一个链表。每个 ListNode 都包含一个指向 DataNode 的指针,它是与指向它的 ListNode 相对应的行的链表的头部.

我将把实现留给你。

关于c++ - 链表中的链表(二维链表?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com