我们知道,在全局定义的结构体变量,存储全局数据区;在函数内定义的结构体变量,存储在栈区;使用malloc函数申请空间来存放结构体变量,则该结构体变量存储在堆空间中。
我们说的链表,其节点数据一般放在堆空间中。
那假如有1000个在函数内部(栈区)或者函数外部(全局数据区)定义好的结构体,能否直接创建链表?可以的,但是这样徒有链表的形式,不具备链表动态扩展的特点。
比如下面段代码,提前定义了结构体数组,然后串联成类似“链表”的形式,但假如节点数目大于6,则难以扩展。
struct MyStruct
{int a;struct MyStruct* next;
};int main(void)
{struct MyStruct node[6];int k;for (int i = 0; i < 5; i++){scanf("%d", &k);node[i].a = k;node[i].next = &node[i + 1];}node[5].a = 44;node[5].next = NULL;struct MyStruct* temp = &node[0];while (temp!= NULL){printf("%d", temp->a);temp = temp->next;}getchar(); getchar(); return 0;
}