//typedef:给一个类型名起一个新名字:typedef char datatype;
//结构体的名字应该与struct一起使用,这样才能表示一个结构类型:struct node
#include<stdio.h>
#include <malloc.h>
#define null NULL
typedef struct node
{
int i;
struct node * next;
}linklist;
linklist* init()
{
linklist *h=(linklist*)malloc(sizeof(linklist));
h->i=0;
h->next=null;
return h;
}
void creat(linklist*h,int num)
{
linklist* s=h;
int j;
int n=num;
for(j=1;j<=n;j++)
{
linklist* r;
if(!(r=(linklist*)malloc(sizeof(linklist))))
{
return;
}
r->i=j;
r->next=null;
s->next=r;
s=r;
}
}
void print(linklist*h)
{
linklist *r=h->next;
while(r!=null)
{
printf("%d ",r->i);
r=r->next;
}
}
void insert(linklist *h,int j,int locate)
{
int in=j;
int lo=locate;
int n=0;
if(lo==1)
{
linklist* r=(linklist*)malloc(sizeof(linklist));
r->i=j;
r->next=h->next;
h->next=r;
}
else
{
linklist *s=h;
while(s->next!=null)
{
n++;
s=s->next;
}
if(lo==(n+1))
{
linklist *q=(linklist*)malloc(sizeof(linklist));
q->i=in;
q->next=null;
s->next=q;
}
else if(lo<=n)
{
linklist *p=h;
int b=0;
while(b<lo-1)
{
p=p->next;
b++;
}
linklist *t=(linklist*)malloc(sizeof(linklist));
t->i=in;
t->next=p->next;
p->next=t;
}
else
{
printf("the insert location is not exist!\n");
}
}
}
void main()
{
linklist * head;
head=init();
int n;
printf("please input the total number:\n");
scanf("%d",&n);
creat(head,n);
print(head);
printf("\n");
printf("please input your insert number:\n");
int in;
scanf("%d",&in);
printf("please input your insert locate:\n");
int lo;
scanf("%d",&lo);
insert(head,in,lo);
print(head);
printf("\n");
}