链表和数组的区别
数组存放数据的地址是连续的,且增加,删除数据需要把后面的数据给挪位置
而链表存放数据的地址是随机的,他有一个指针指向下一个地址,增加,删除数据仅仅将指针指向给修改了即可
结构体用指针变量名访问,用"->"运算符(箭头运算符)
链表的遍历
链表后端插入
注意:插入的顺序不能乱,否则地址会丢失
第一:找到你想要插入的数据
第二: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;
}
链表的删除
链表的头插法
链表的尾插法