10 创建单链表(创建头结点的方式,尾插入初始化赋值)
#include<stdio.h>
#include<stdlib.h>
//链表中节点的结构
typedef struct Link {
int data;
struct Link* next;
}link;
//链表初始化
link* initLink(link* head_node) {
head_node = (link*)malloc(sizeof(link)); //头结点申请空间
head_node->data = 000; //头结点的数据域是000
head_node->next = NULL;
link* tmp = head_node; //tmp,保存头结点
//尾插入初始化赋值
printf("输入若干个值保存到链表中:\n");
int num = 0;
while (num != -1) { //-1代表结束
scanf("%d", &num);
link* new_node = (link*)malloc(sizeof(link)); //申请新的结点
new_node->data = num;
new_node->next = NULL;
tmp->next = new_node; //头结点的指针域指向这个新申请的结点
tmp = new_node; //头结点后移
}
printf("头指针指向的值是:%d\n", head_node->next->data);//1
return head_node; //将头结点返回
}
void showLink(link* head_node) {
link* tmp = head_node; //tmp,保存头结点
while (tmp->next != NULL) {
if (tmp->data == -1) {
break;
}
printf("%d ", tmp->data);
tmp = tmp->next;
}
printf("\n");
}
void main() {
link* myheadNode = NULL; //创建头结点
myheadNode = initLink(myheadNode); //获得经过初始化后的头结点
printf("初始化链表为:\n");
showLink(myheadNode);
}

头结点的数据域是0,也可从第一个结点开始遍历

浙公网安备 33010602011771号