链表就是一连串的数据,是一种抽象的数据结构
- 与数组相比,链表的优点,可以很快的插入数据,如果想在数组中插入一个值,久不得不将插入点后面的所有塑胶后移一个位置。
递归结构
- 如果一个结构包含一个链向同种结构的链接,这张结构就被称为
递归结构
- 递归结构中含有指向同种结构的指针
位于Head First C的第271页:
虽然
typedef
命名结构时可以跳过结构名,但是因为在递归结构
中需要包含一个相同类型的指针,C语言不允许用typedef
别名来声明它,因此为该结构起一名。
#include <stdio.h>
typedef struct island {
char *name;
char *opens;
char *closes;
struct island *next;
} island;
void display(island *start)
{
island *i = start;
for (;i != NULL;i = i-> next)
{
printf("name :%s\n open:%s - %s\n",i->name,i->opens,i->closes);
}
}
int main()
{
island amity = {"Amity","09:00","17:00",NULL};
island craggy = {"Craggy","09:00","17:00",NULL};
island isla_nublar = {"Isla Nublar","09:00","17:00",NULL};
island shutter = {"Shutter","09:00","17:00",NULL};
amity.next = &craggy;
craggy.next = &isla_nublar;
isla_nublar.next = &shutter;
island skull = {"SKull","09:00","17:00",NULL};
isla_nublar.next = &skull;
skull.next = &shutter;
display(&amity);
return 0;