链表包括数据域和指针域两个部分。其中,数据域存储节点的数据,指针域则指向下一个节点。
创建链表先创建链表的结构体。如下代码:
struct node {
int data; //数据域
struct node *next; //指针域
}
主函数创建头结点:
int main(){
//创建头结点并且为其动态申请空间
struct node *head = (struct node *)malloc(sizeof(struct node *));
//判断空间是否开辟成功
if(head==NULL){
printf("空间开辟失败");
return 0;
}
//头结点,指针域为空
head->next=NULL;
}
链表插入结点有头插法和尾插法。这里呢,我们用头插法创建5个结点:
注:头插法为逆序输出
int creat(struct node *head){
//定义头指针指向头结点
struct node *p=head;
//循环创建5个结点
//创建一个新的结点
struct node *q;
int i;
for(i=0;i<5;i++){
//为新结点动态创建空间
q=(struct node *)malloc(sizeof(struct node *));
//键盘录入
printf("请输入数据");
scanf("%d",&q->data);
//头插法
q->next=p->next;
p->next=q;
}
}
遍历输出:
int shuchu(struct node *){
//定义头指针指向首元结点
struct node *p=head->next;
while(p!=NULL){
printf("%d ",p->data); //输出元素
p=p->next; //指针后移
}
printf("\n");
}