#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct linklist
{
int x;
struct linklist *next;
}linklist;
linklist *create_linklist1(linklist *head,int n);//头插法创建链表
linklist *create_linklist2(linklist *head,int n);//尾插法创建链表
void print_linklist(linklist *head);//输出链表
linklist *create_linklist1(linklist *head,int n)//头插法建立链表
{
linklist *p;
int i,x;
head=(linklist *)malloc(sizeof(linklist));
if(head==NULL)
return head;
head->next=NULL;
printf("请输入%d个数字用头插法建立链表:
",n);
for(i=n;i>0;i--)
{
p=(linklist *)malloc(sizeof(linklist));
if(p==NULL)
return head;
scanf("%d",&x);
p->x=x;
p->next=head->next;
head->next=p;
}
return head;
}
linklist *create_linklist2(linklist *head,int n)//尾插法建立链表
{
linklist *p,*tail;
int i,x;
head=(linklist *)malloc(sizeof(linklist));
if(head==NULL)
return head;
head->next=NULL;
tail=head;
printf("请输入%d个数字用尾插法建立链表:
",n);
for(i=n;i>0;i--)
{
p=(linklist *)malloc(sizeof(linklist));
if(p==NULL)
return head;
scanf("%d",&x);
p->x=x;
tail->next=p;
p->next=NULL;
tail=p;
}
return head;
}
void print_linklist(linklist *head)
{
linklist *p;
p=head->next;
if(head->next==NULL)
printf("该表为空
");
printf("该链表输出为;
");
while(p!=NULL)
{
printf("%d ",p->x);
p=p->next;
}
printf("
");
}
int main()
{
linklist *r;
int n;
printf("请确定建立链表长度为:");
scanf("%d",&n);
r=create_linklist1(r,n);
print_linklist(r);
r=create_linklist2(r,n);
print_linklist(r);
}