静态链表的学习

静态链表

1.概念
静态链表是顺序表和链表的结合,在初始化时申请一定大小的空间(等同于定义一定长度的数组),数组元素时结构体的变量,结构体内有两个元素,一是数据,二是游标(相当于链表中的指针),游标保存的是下一个节点的下标。
2.与动态链表的区别:
(1)静态链表类似于数组的方法实现的,是顺序存储结构,在物理地址上的连续的,而且需要预先分配空间大小。所以静态链表的初始值一般是固定的,在做插入和删除时不需要移动元素,仅需修改指针。
(2)动态链表是用内存申请函数(malloc/new)动态申请内存的,所以在链表的长度上没有限制。动态链表因为是动态申请内存的,所以每个节点的物理地址不连续,要通过指针来顺序访问。
3.静态链表;

#include <stdio.h>
 
/* 静态链表 */
struct node
{
    int num;
    struct node *next;
};
 
int main()
{
    struct node stu[3];
    struct node *head, *p;
 
    stu[0].num = 10;		//对结点的num成员赋值
    stu[1].num = 20;
    stu[2].num = 30;
 
    head = &stu[0];		//头指针指向第1个结点stu[0]
    stu[0].next = &stu[1];	//将结点stu[1]的地址赋值给stu[0]结点的next成员
    stu[1].next = &stu[2];	//将结点stu[2]的地址赋值给stu[1]结点的next成员
    stu[2].next = NULL;		//stu[2]是最后一个结点,其next成员不存放任何结点的地址,置为NULL
 
    //遍历静态链表
    p = head;			//使p指针也指向第1个结点
    
    do{
        printf("%d\n", p->num);	//输出p所指向结点的数据
        p = p->next;		//然后让p指向下一个结点
    } while (p != NULL);	//直到p的next成员为NULL,即完成遍历
 
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值