循环建立链表:
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}node;
void main()
{
node *head=NULL,*tail,*p;
int i,*a;
a=(int *)malloc(sizeof(int)*100);
for(i=0;;i++)
{
scanf("%d",&a[i]);
if(a[i]==0) break;
}
if(a[0]==0) ;
else{
head=(node *)malloc(sizeof(node));
head->data=*a++;
tail=head;
while(*a){
tail->next=(node *)malloc(sizeof(node));
tail=tail->next;
tail->data=*a++;
}
tail->next=NULL;
}
p=head;
while(p){
printf("%d/t",p->data);
p=p->next;
}
printf("/n");
getchar();
}
递归建立链表:
node *create(int *p)
{
node *local;
if(p[0]==0) return NULL;
else{
local=(node *)malloc(sizeof(node));
local->data=*p;
local->next=create(p+1);
return local;
}
}
void main()
{
node *head=NULL,*p;
int i,*a;
a=(int *)malloc(sizeof(int)*100);
for(i=0;;i++)
{
scanf("%d",&a[i]);
if(a[i]==0) break;
}
head=create(a);
p=head;
while(p){
printf("%d/t",p->data);
p=p->next;
}
printf("/n");
getchar();
}