线性表的链式表示和实现--单链表

本文介绍了单链表的基本概念,包括其定义、节点结构、指针实现等,并详细讲解了单链表的插入、删除操作及如何遍历链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单链表分为:动态链表、静态链表两种。


单链表的定义

链式存储:用一组任意存储单元存储线性表的数据元素。

逻辑顺序与物理顺序可以相同也可以不相同

插入、删除方便,共享空间好。


单链表的节点结构


每个结点有一个元素和下个元素的地址(只有一个连接域),称单链表。


链表有表头、表尾,表头也就是首地址,表尾为空值。

链表是非顺序存储,顺序存取

p1.x = p→x  (p1为对象,p为首地址)


class ListNode{

int  data;

ListNode *next;

};

ListNode *p;

 

→ data      

→ next   


单链表的指针实现

不带头结点的单链表结构

判断表尾的条件:→ next == null 

判断空表的条件:L == null

带头结点的单链表结构

真正有效的元素是从第二个结点开始的,

判断表尾的条件:p → next == null 

判断空表的条件:L→ next == null  (一般的都使用带头结点的)


单链表的插入操作


→ next = p → next;  

 p → next = q;


单链表的删除操作


q = → next;

→ next = q → next;


p → next = p → next  → next//等同于上面两句


构造一个链表

创建一个data域值为d,next域值为n的结点。

创建链表是否成功,参照判断链表是否为空的条件。


遍历链表

void printList(){

Node *c = head; //新建一个指针指向表头


while(c!=NULL){//判断链表是否为空

print(c→data)//输出结点的值

c = c → nextNode();//c指向下一个结点

}

}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值