初学链表之单向链表创建
链表是由一个个节点构成的,而每一个节点都可以看成两个部分组成,分别是数据域和指针域,链表是由不是连续的地址空间组成的非线性存储结构,字面意思,他们不是一个连串的地址空间,那么我们想让他们能被顺序访问,就得用指针来分别访问他们的地址空间,这就是指针域的功能
创建结构体类型
typedef struct Link{
int data;
struct Link *next;
}link;
现在初始化一个链表,里面是1-10的数值
并且在链表里进行插入,删除等基本操作
#include<stdio.h>
#include<malloc.h>
typedef struct Link{
int data;
struct Link *next;
}link;
//初始化一个新链表
link *newlink(){
link *head,*end;//定义头尾节点
head=end=(link*)malloc(sizeof(link));//随机分配一个link*类型,link大小的地址空间
int i;
for(i=1;i<10;i++){
link *a=(link*)malloc(sizeof(link));//给每个普通节点分配一个link*类型,Link大小的地址空间
a->data=i;//数据域赋值
a->next=NULL;//该节点的指针域指向的是NULL值,不然随机指向很危险,会成为一个野指针,可能造成致命错误。也给最后一个节点指针域赋值NULL
end->next=a;//用于连接节点,此时的end是head的地址,他的指针域指向这里的a节点,将此时的a节点和head节点相连起来
end=a;