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,也可从第一个结点开始遍历