文章目录
头插法
使用类似于插队的方法,始终让新结点在第一位置,这种方法称为头插法。
void CreateListHead(LinkList *L,int n)
{
LinkList p;
int i;
srand(time(0));
*L=(LinkList)malloc(sizeof(Node));
(*L)->next=NULL;
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(Node));
p->data=rand()%100+1;
p->next=(*L)->next;
(*L)->next=p;
}
}
尾插法
如果我们把每次的新结点都插在终端结点的后面,这种算法成为尾插法。
void CreateListHead(LinkList *L,int n)
{
LinkList p,r;
int i;
srand(time(0));
*L=(LinkList)malloc(sizeof(Node));
r=*L;
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));
p->data=rand()%100+1;
r->next=p;
r=p;
}
r->next=NULL;
}
单链表与顺序结构的优缺点
结构 | 存储方式 | 时间性能 | 空间性能 |
---|---|---|---|
顺序存储结构 | 一段连续的存储单元 | 插入和删除操作复杂度高O(n) | 不方便预估存储大小 |
单链表 | 任意存储 | 查找操作复杂度高O(n) | 不需要考虑,只要有,就可以分配 |