思路:拿出一个结点头插。
代码实现
运行环境:VS2017
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int date;
struct node*next;
}ElemSN;
//创建链表
ElemSN*GreatLink(int Date[], int n)
{
int i;
ElemSN*p, *t = 0, *h = 0;
for (i = 0;i < n;i++)
{
p = (ElemSN*)malloc(sizeof(ElemSN));
p->date = Date[i];
p->next = NULL;
if (!h)
h = t = p;
else
t = t->next = p;
}
return h;
}
//输出链表
PrintLink(ElemSN*h)
{
ElemSN*p;
for (p = h;p;p = p->next)
printf("%3d", p->date);
printf("\n");
}
PreLink(ElemSN*h)
{
ElemSN*p = NULL, *h1 = NULL;
while (h)
{
p = h;
h = h->next;
p->next = h1;
h1 = p;
}
return h1;
}
int main(void)
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
ElemSN*head;
head = GreatLink(a, 10);
PrintLink(head);
head = PreLink(head);
PrintLink(head);
system("pause");
}
输出结果:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1