数据结构——线性表(链表) c语言 学习笔记

一、链表

  1. 链式存储结构:在逻辑上连续,存储时物理上不连续,但要用一定的手段使得在逻辑上连续。 这个手段就是指针。
  2. 链表:以链式存储结构存储的线性表,它是基于指针实现。
  • 这里需要知道指针指向的实质:地址赋值。
  • 数据+下一个数据的地址=结点----》结构体类型。

                       
 链表的分类

相关概念

i.头指针:保存第一个数据地址的指针。

ii.首元结点:保存线性表第一个数据的结点。

iii.头结点:里面没有数据,仅仅保存了首元结点的地址。 

为什么要有头结点?

头结点是链表中位于第一个实际数据结点之前的辅助结点;头结点确保所有结点(包括首元结点)都有前驱结点,避免针对首元结点的特殊处理。例如在插入或删除操作时,无需区分是否在链表头部操作,代码逻辑更一致。

例如: 

 

1)单链表:单链表就是只能单向寻找数据

i.操作:增删改查等。

ii.单链表的实现

定义一个空单链表

typedef struct{
	elemtype data;//数据域
	struct node* next;//指针
}node,*linklist;
//linklist=node*  强调该指针是头结点
// node*q 强调该指针是一个普通指针 

初始化链表

//初始化一个带头结点的空链表
linklist initlist{
    linklist l=(node*)malloc(sizeof(node));
    if(l==NULL){
        printf("内存分配失败。\n");
    }else{
        l->next=NULL;
    }
return l;
}

 增操作

                头插法:插到头结点后面的数据(结点),插入的新结点是首元结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值