链表是个好东西

链表和数组的区别

数组存放数据的地址是连续的,且增加,删除数据需要把后面的数据给挪位置

而链表存放数据的地址是随机的,他有一个指针指向下一个地址,增加,删除数据仅仅将指针指向给修改了即可

结构体用指针变量名访问,用"->"运算符(箭头运算符)

 链表的遍历

链表后端插入

 

注意:插入的顺序不能乱,否则地址会丢失

          第一:找到你想要插入的数据

          第二:new->next = p->next

          第三: p.next=new

链表前端插入

 

struct Test * insertforhead(struct Test*head,int data,struct Test *new)
{
	struct Test*p=head;
	if(p->data==data)
	{
		new->next=head;             //第一个情况:直接将new的next指向head链表头
		return new;
	}
	while(p->next!=NULL)            //第二个情况:先联系,再插入
	{
		if(p->next->data==data)
		{
			new->next=p->next;
			p->next=new;
			printf("insert ok\n");
			return head;
		}
		p=p->next;
	}
	printf("no this data%d\n",data);
	return head;
}

链表的删除

 链表的头插法

链表的尾插法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值