头插法建立链表:
流程:
示例:若输入 A B
⭐️特点:(逆置)与基于原来的数组建立的链表次序是相反的
示例:
输入3 4 5 6 7 9999一串整数,9999代表结束,通过头插法新建链表,并输出。
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
//声明结构体LNode,同时定义了与LNode类型相同的结构体变量 LNode 与结构体变量的指针 LinkList
// LNode * 与 LinkList 是等价的
typedef struct LNode{
ElemType data;
struct LNode * next;
}LNode,*LinkList;
//头插建立
LinkList list_head_insert(LinkList &L)
{
L= (LNode*)malloc(sizeof(LNode)); //申请
L->next=NULL; //L初始化 指向NULL
ElemType x;
scanf("%d",&x);
LNode * s;
while(x!=9999) //9999结束符,即若输入 9999 结束申请
{
s=(LinkList) malloc(sizeof(LNode));
s->data=x; //把读取的值 赋给 新结点的数据域data
s->next=L->next; //新结点的next 指向第一个结点
L->next=s; //头结点next指向第一个结点
scanf("%d",&x);
}
}
//打印链表
void print_list(LinkList L)
{
L=L->next;
while(L !=NULL) //当结点L不为NULL时,并不是下个结点为NULL
{
printf("%3d",L->data);
L=L->next;
}
printf("\n");
}
int main() {
LNode* L; //L 链表头指针
list_head_insert(L); //输入 3 4 5 6 7 9999
print_list(L);
return 0;
}