C语言可以在一个链表里保存两个结构体吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言可以在一个链表里保存两个结构体吗相关的知识,希望对你有一定的参考价值。

在对结构体的变量进行赋值的时候~~这两个结构体可以分开赋值、

参考技术A 当然可以拉
typedef
struct
ST1
ST1_T;
typedef
struct
ST2
ST2_T;
typedef
union

ST1_T
st1;
ST2_T
st2;

ST;
然后将ST作为
链表
的基本数据类型就是了
如果是同时存储的话,那么:
typedef
struct

ST1_T
st1;
ST2_T
st2;

ST;
参考技术B 链表是结点的有机(有序或无序)连接,这些结点的类型一般为构造数据类型。如果两条链表需要比较、合并等运算,那么这两条链表的结点类型一定是相同的,由此可见,一个结构体应该可以构造多条链表。

c语言链表: 链表里p->next是怎么指向下一个结点的呢,它是怎么得到下一个结点的地址。。。求详细

struct node n1,n2;//定义两个节点
n1.next=&n2;//n1和n2连接起来
n2.next=NULL;//n2的下个节点为空
struct node n3;//增加一个节点
n2.next=&n3;//n2和n3连接起来
n3.next=NULL;//n3的下个节点为空
这样你明白了吗
p->next其实就是(*p).next
------------------------------------
用指针表达
struct node *n1=( struct node *)malloc(sizeof( struct node));//新增一个节点
struct node *n2=( struct node *)malloc(sizeof( struct node));//再新增一个节点
n1->next=n2;//连接两个节点
n2->next=NULL;//n2的下个节点为空
参考技术A next就是下个结点的指针,他存的就是下一个结点的地址,只要读出next值就行了,获得某个节点的指针只要读取上一个结点的next就行,他就是该节点的指针。。。。。 参考技术B 其实这是递归调用,它在结构体里面定义了一个指针,但这个指针又指向由这个结构体定义的下一个变量。通过指针就可以找到地址啊 参考技术C 因为在增加链表,或者插入的时候,next的指向被更改为下一个数据的地址。所以next储存的就是下一个节点的地址了。 参考技术D 是组建链表时候得到的,你是逆着来想这问题了吧 ~~
以下是例子

struct s
int num;
double score;
struct s *next;
a,b,c;

struct s *head;
a.num=10000;a.score=99;
b.num=10010;b.score=0;
c.num=10086;c.score=59;
head=&a; a.next=&b;b.next=&c;c.next=NULL;本回答被提问者采纳

以上是关于C语言可以在一个链表里保存两个结构体吗的主要内容,如果未能解决你的问题,请参考以下文章

C++的一个函数的返回值可以是结构体吗?

真奇怪了,结构体里不能带结构体吗?

golang中返回空结构体可以返回nil吗

C语言中怎样用链表保存结构体数据(动态数据结构)

C语言函数中如何返回一个结构体类型

“->"这个符号代表啥含义,比如linux内核链表里的(ptr)->next = (ptr)这是啥含义,求详细解释。