说明:利用递归来建立动态储存,要用malloc定义,不能直接用结构体定义,不难函数调用后释放。
#include<stdio.h>
#include<stdlib.h>
struct s //建立结构体类型
{
int a;
struct s * next;
};
int main()
{
struct s * fun(int n);
void output(struct s *p);
int n;
scanf("%d",&n);
output(fun(n));
return 0;
}
struct s * fun(int n) //建立链表
{
struct s * p=NULL;
if(n==0)
return NULL;
p=(struct s *)malloc(sizeof(struct s));//动态储存
scanf("%d",&(p->a)); //输入数据
n--;
if(n==0)
p->next=NULL;
if(n!=0)
p->next=fun(n); //递归
return p;
}
void output(struct s *p) //输出链表
{
while(p!=NULL)
{
printf("%d\n",p->a);
p=p->next;
}
}