内存布局及创建链表

本文详细介绍了程序运行时的内存四区:代码段、数据段(包括未初始化和初始化)、堆和栈。讲解了如何在链表中进行节点的插入、删除以及反转操作,包括头插、中间插入、尾插、头删、中间删除和尾删。同时,文章还涉及到了链表的反转过程,包括保存旧链表头节点、移除节点并头插到新链表中。
摘要由CSDN通过智能技术生成

内存四区

1、正文段或者代码段:    程序运行时的代码, 只读的
2、数据段:  
       未初始化数据段: 存储未初始化的静态变量或者全局变量, 系统会自动初始化为0
       初始化数据段:    存储初始化的静态变量或者全局变量
       常量区:         常量 、const 修饰的静态变量和全局变量

3、堆: 程序员自己进行管理的,使用时需要申请,使用完需要释放内存

4、栈:局部变量、形参、保护现场   ps:栈区不会自动初始化的

创建链表

在链表的头部插入结点建立单链表  
struct node*head = NULL,*pnew = NULL,
if(head == NULL)
{
head = pnew;
}
else
{pnew->next = head;
 head = pnew
}

根据节点序号插入

头插:

pnew->next = head;

head = pnew;

中间插入:

首先找到插入位置前一个节点的地址,使用指针保存

pnew->next = p->next;

p->next =pnew

尾部插入:

直接找到最后一个节点的地址,使用指针变量p保存

p->next = pnew;

根据节点序号删除操作

头删:

pdel = head;

head = head->next;

free(pdel)

p->next = pdel->next

free(pdel)

反转操作:将旧链表中的节点,从第一个开始,一个一个的拿下来,通过头插法加入新的链表

1.保存旧链表第一个节点的地址

2.将第一个节点从旧链表中移下来

3.头插法加入新的链表
 

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值