单链表-乡巴老也能看懂

单链表-乡巴老也能看懂

链表
链表是一种物理存储单元上非连续非顺序的存储结构数据元素的逻辑
  顺序是通过链表中的指针链接次序实现的。链表由一系列节点(链表中没一个
   元素成为节点) 组成,节点可以在运行时动态生成。每个节点包括两个部分;
  一个时存储数据元素的数据域,另一个时存储下一个节点地址的指针域。
相比较的数组,链表结构与之有如下区别:
(1) 数组通常在创建的时候就需要设定数据的大小,使用链表结构可以
克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空
间,实现灵活的内存动态管理:
      (2) 链表由于增加了节点的指针域,空间开销比较大
      (3) 在中间插入或删除元素(节点)时,链表非常的灵活不需要移动
其他元素(节点)的位置:
      (4) 数组可以随机存储数据 , 但是链表不允许随机存取。

链表 (由多个节点组成,分散存储 由指针链接起来呢,)
节点组成(两部分:1数据域 2.指针域-存储下一个节点的指针)
节点1 节点2 节点3 节点4
数据  指针域 数据  指针域 数据  指针域 数据  指针域
 指向节点2 指向节点3 指向节点4  指向NULL
插入节点
节点1要插入节点
数据   指针域数据   指针域
直线新的节点            指针指向要插入位置后面节点的地址
最后他们组成了一个新的链表


方式1  头指针       头指针指向第一个数据节点
   head     =    NULL      需要判断 是否为空
方式2  头节点
   头节点   数据不使用     指针指向



//结构的数据类型
typedf struct Node{
	int data;
	struct Node*next;
}Node;
//链表类型
typedef struct List{
	Node *head;
}List;
//1创建节点
Noode* CreateNode (int data){
	Node *PtrNode = malloc(sizeof(Node));
	PtrNode->data = data;
	PtrNode->next = NULL;
	return PtrNode;
}
//2向头结点位置插入新结点、
void PushHead(List *list , int data){
	Node*PtrNew = CreateNode(data); //
	PtrNew->next =list->head;//如果链表有节点
	list->head = PtrNew ;//如果链表中无节点
	
}
//遍历链表
void tralve (List *list){
	printf("链表中的元素");
	Node *PtrHead= list->head;//操作是指针指向可以发生变化
	if(!PtrHead){
		put("空");
	}
	while(PtrHead){
		printf("%d",PtrHead->data);
		PtrHead = PtrHead->next;
	}
	printf("\n");
}
//4 计算结点个数
int length(List *list){
	int count =0;
	Node *PtrHead = list ->head;
	while(PtrHead){
		count++;
		PtrHead = PtrHead ->next;
	}
}
int main(){
	List list;
	list.head = NULL;//头指针
	PushHead(&list,1);
	tralve(&list);
	PushHead(&list,2);
	tralve(&list);
	PushHead(&list,3);
	tralve(&list);
	printf("length = %d\n",length(&list));
	return 0;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乡巴老来编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值