链表和数组的区别
数组存放数据的地址是连续的,且增加,删除数据需要把后面的数据给挪位置
而链表存放数据的地址是随机的,他有一个指针指向下一个地址,增加,删除数据仅仅将指针指向给修改了即可

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

链表后端插入
 
注意:插入的顺序不能乱,否则地址会丢失
第一:找到你想要插入的数据
第二: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;
}链表的删除

链表的头插法

链表的尾插法




















