我知道如何使用两个结构创建链接列表
为此,我声明了一个包含所有必要数据的结构。它看起来像这样:
struct Data{
int numb;
int date;
}
第二个结构表示具有 head 的节点(即列表的第一个元素)和指向下一个节点的链接。
struct llist{
Data d;
llist *next;
}
我想知道如果我想将 llist 添加到另一个代表列表的结构中。
struct mainList{
llist l;
}
我知道这可能会造成一些困难,因为我不太确定如何将主列表传递给函数。
在这里,我试图打印链表
void show(mainlist *ml){
llist *u = ml->l;
while(u){
printf("Date: %s\t Name: %s\n", u->d.dat, u->d.uname/* u->d.dat, u->d.uname*/);
u=u->next;
}
}
但是有一个错误说“我不能'列出''''''''''''''''''''''''''''''''' 所以,我在这里一无所知......有什么想法吗?
答案 0 :(得分:0)
有许多问题 - 但是,与您所指的错误相关的一个问题是:
llist *u = ml->l; /* I guess you mean struct llist *u = ml->l */
show
函数中的。此处u
是struct llist *
,但ml->l
是struct llist
,但不是指向它的指针。您需要将struct mainList
更改为:
struct mainList{
struct llist *l;
}
因此ml->l
是struct llist *
。
答案 1 :(得分:0)
下面的工作解决方案,您的代码段存在一些问题。在评论中指出......
#include <iostream>
using namespace std;
struct Data {
int numb;
int date;
};
struct llist {
Data d;
llist *next;
};
struct mainList{
llist *l; /*should be a pointer as you are referencing it as a pointer*/
};
void show(mainList *ml){ /*should be mainList, your code snippet shows 'mainlist'*/
llist *u = ml->l;
while(u){
printf("Date: %d\t Name: %d\n", u->d.date, u->d.numb/* u->d.dat, u->d.uname*/); /*your code snippet was using unavailable members of the struct*/
u=u->next;
}
}
int main ()
{
mainList ml;
show(&ml);
return 0;
}