#include <stdio.h>
#include <stdlib.h>
#define true 0
#define false -1
typedef struct _node
{
int data;
struct _node * next;
}Node;
//指定位置pos插入数据
int insert_pos(Node **h,int pos,int data)
{
if(h == NULL)
return false;
Node *node = (Node *)malloc(sizeof(Node)/sizeof(char));
if(node == NULL)
{
return false;
}
node->data = data;//成员初始化
if(*h == NULL)
{
if(pos != 1)
{
printf("插入位置无效\n");
free(node);
return false;
}
*h = node;
node ->next = NULL;
}
else//不是空表
{
Node *tmp = *h;
int i;
for(i = 0;i < pos - 2;i++)
{
if(tmp == NULL)
{
printf("越界\n");
return false;
}
tmp = tmp ->next;
}
node ->next = tmp ->next;
tmp ->next = node;
}
return true;
}
//链表显示
void display(Node *h)
{
if (h == NULL)
return ;
int count = 0;
while(h)
{
if(count++ % 4 == 0)
{
printf("\n");
}
printf("%8d",h->data);
h =h ->next;
}
printf("\n");
}
//主函数
int main()
{
Node *head = NULL;//head 指向链表第一个结点
int i;
for(i = 0;i < 10;i++)
{
insert_last(&head,i);
}
insert_pos(&head,5,1000);
display(head);
printf("\n");
return 0;
}