#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct Node {
int num;
struct Node *next;
}Node;
void print(Node L) //输出全部链表元素
{
Node* p=L.next;
while (p!=NULL)
{
printf("%d\n", p->num);
p = p->next;
}
}
Node* Init(int x) //尾插法建立单链表
{
Node *p, *q, *head;
q = (Node*)malloc(sizeof(Node));
q->next = NULL;
head = q;
int i;
for (i = 0; i < x; i++)
{
p = (Node*)malloc(sizeof (Node));
p->next = NULL;
p->num = i;
q->next = p;
q = p;
}
return head;
}
void insertItem(Node* L, int j) //插入到指定位置
{
Node *p = L;
int i = 0;
while (p && i < j - 1) //找到要插入位置的前驱
{
i++;
p = p->next;
}
if (!p || i > j - 1)
{
printf("插入失败\n");
}
else
{
Node *q = (Node*)malloc(sizeof(Node));
printf("请输入要插入的元素:");
scanf("%d", &(q->num));
q->next = p->next;
p->next = q;
}
}
int main()
{
Node *L = (Node*)malloc(sizeof(Node));
L->next = NULL;
L=Init(5); //初始化链表
print(*L); //输出链表
insertItem(L, 4); //插入指定位置
printf("插入后\n");
print(*L); //重新输出
return 0;
}