思路:头插法说明我们每次插入的都是都结点不用把头结点拉出来单独考虑,我们设指针h初值为NULL,我们用malloc分配一个结点把它给指针p,给p的数据域赋数组中最后的一个值,指针域赋h,这样第一个结点就创建好了,然后我们将h移到p上,这样每次新创建的结点连接在h前面,不断头插。
代码实现
运行环境VS2017
#define N 10
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int date;
struct node*next;
}ElemSN;
//创建链表
ElemSN*GreatLink(int Date[])
{
int i;
ElemSN*p, *h = 0;
for (i = N-1;i >-1;i--)
{
p = (ElemSN*)malloc(sizeof(ElemSN));
p->date = Date[i];
p->next = h;
h = p;
}
return h;
}
//输出链表
PrintLink(ElemSN*h)
{
ElemSN*p;
for (p = h;p;p = p->next)
printf("%3d", p->date);
printf("\n");
}
int main(void)
{
int a[N] = { 3,2,5,8,4,7,6,9,1,1 };
ElemSN*head;
head = GreatLink(a);
PrintLink(head);
system("pause");
}
输出结果
3 2 5 8 4 7 6 9 1 1
请按任意键继续. . .