链表tip

time will tell Lv4

1、同为创建一个链表头,使用区别

1
2
element L;
InitList(&L);

此处为创建一个链表单元,具有具体的全部功能以及内容,所以无需分配空间

因此在函数调用时传入地址进行修改

1
2
element *L;
InitList(L);

同理,如果创建的是结构体地址,那么直接可以传入该指针

2、在初始化链表头时,分配与返回问题

如果用的是

1
2
element L;
InitList(&L);

则使用修改指针的方式对节点进行修改

1
2
3
4
5
6
7
void InitList(element *L)//修改指针需要传地址
{
L->data=0;
L->next=L->prev=L;

L->length=0;
}

记住!!不需要分配空间,不然后继访问指针的时候会混乱

再如果用的是

1
2
element *L;
InitList(L);

则需要分配空间并返回

1
2
3
4
5
6
7
8
9
element* initList()//分配空间需要返回指针
{
element* L=(element*)malloc(sizeof(element));
L->data=0;
L->next=L->prev=L;

L->length=0;
return L;
}

而不需要额外传递参数

  • Title: 链表tip
  • Author: time will tell
  • Created at : 2024-10-16 22:49:19
  • Updated at : 2024-10-17 13:26:17
  • Link: https://sbwrn.github.io/2024/10/16/链表/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments