typedef int DATATYPE
typedef struct tag_link
{
DATATYPE data;
struct tag_link * next;
}link;
#define NULL 0
link * CreatLink(void) //表头插入
{
link *head=NULL;
link *P1;
P1=(link*)malloc(sizeof(link));
scanf("%d",&P1->data);
while(P1->data)
{
P1->next=head;
head=P1;
P1=(link*)malloc(sizeof(link));
scanf("%d",&P1->data);
}
free(P1);
return head;
}
link * CreatLink2(void)//从表尾
{
link* head=NULL;
link* P1;
link* P2=NULL;
P1=(link*)malloc(szieof(link));
scanf("%d",&P1->data);
while(P1->data)
{
if(!head) //空链表
{
head=P1;
}
else
{
P2->next=P1;
}
P2=P1;
P1=(link*)malloc(sizeof(link));
scanf("%d",&P1->data);
}
free(P1);
if(P2)p2->next=NULL;//P2最后必定指向链表尾部
return head;
}
int InsertNode(link **head,DATATYPE data,int i)
{
link *p,q;
if(i<=0 || i>count+1)
return 0;
q=*head;
p=(link*)malloc(sizeof(link));
p->data=data;
if(1==i || *head==NULL)
{
p->next=*head;
*head=p;
}
else
{
for(int j=1;j<i-1;j++)
{
q=q->next;
}
p->next=q->next;
q-next=p;
}
return 1;
}