#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
int main()
{
int n;
struct node *h,*p;
h=(struct node *)malloc(sizeof(struct node));
h->next=NULL;/*先使h为空*/
scanf("%d",&n);
while(n--)
{
p=(struct node *)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=h->next;/*链表建成后第一个结点要成为最后一个节点,它的指向要为空*/
h->next=p;
}
p=h->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
return 0;
}
逆序建表,建立p,h两个移动指针即可。输入p的值后,每次都让p指针指向与h的指向相同的方向,再让h保留p的地址,输出时最后的空格我保留也AC了,你们可以随意。