链表相关知识

一.链表基本概念

  • 链表是一种常见的数据结构,它通过指针将一系列数据结点,连接成一个数据链。相对于数组,链表具有更好的动态性。
  • 数据域用来存储数据,指针域用来建立与下一个结点的联系,保存下一个结点的地址。
  • 建立链表时无需预先知道数据总量的,可以随机分配空间,可以高效的在链表中的任意位置实时插入或删除数据。
  • 链表的开销,主要是访问顺序性和组织链的空间损失。
  • 链表在内存中是非连续的。

.数组和链表的区别

数组:一次性分配一块连续的存储区域

优点:随机访问元素效率高

缺点:一次性分配一块连续的存储区域;

          删除和插入某个元素的效率低;

链表:无需一次性分配一块连续的存储区域,只需分配n块结点存储区域,通过指针建立关系。

优点:删除和插入某个元素的效率高

缺点:随机访问元素效率低

链表的插入

void insert_linklist(struct linknode*header,int oldval,int newnal)
{
	if(NULL==header)
	{
		return;
	}
	//两个辅助指针变量 
	struct linknode*pprev=header;
	struct linknode*pc=prev->next;
	while(pc!=NULL)
	{
		if(pc->data==oldval)
		{
			break;
		}
		pprev=pc;
		pc=pc->next;
    }
		if(pc==NULL)//说明链表中不存在oldval的节点 
		{
			return;
		}
		//先创建新节点
		struct linknode*newnode=malloc(sizeof(struct linknode));
		newnode->data=newval;
		newnode->next=NULL;
		//新节点插入到链表中
		newnode->next=pc;
		pprev->next=newnode;
}

链表的遍历:

//链表的遍历打印 
void foreach_linklist(struct linknode*header)
{
	if(NULL==header)
	{
		return;
	}
	//辅助指针变量
	struct linknode*pc=header->next;
	while(pc!=NULL)
	{
		printf("%d",pc->data);
		pc=pc->next;
	}
}

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值