1、追踪学习,单链表篇
单链表中的头插尾插法,其本意是来自于C语言中对于链表的操作,因为主要涉及的是指针的操作,所以简单说一下实现
- 准备一个指针结构体
struct Link {
int num;
struct Link *next;
}Link;
-创建一个单链表,包含1,2,3,4,5位数
struct Link *Create() {
int i = 1;
struct Link *h = NULL , *s , *r;
while(i!=6) {
s = (struct Link *)malloc(sizeof(struct Link)); //创建一个动态分配的结点
s->num = i; //初始化赋值
if(h == NULL) { //判断头指针是否为NULL
h = r = s; //初始化头指针 尾指针
} else {
r->next = s;
r = s;
}
i++;
}
r->next = NULL;
r = h; // 将尾指针指向头指针,便于输出
return r;
}
补充:这里头指针赋值的是NULL,不可使用h->next == NULL判断,是头结点并没有被分配空间初始化,所以会陷入死循环
- 创建一个打印输出算法
void DispLink(struct Link *L){
struct Link *H;
H = L; //赋值指针H , 转作输出H链表值
while(H!=NULL){
printf("%d\n",H->num);
H = H->next;
}
}