```c
#include<stdio.h>
#include<stdlib.h>
typedef struct list {
int date;
struct list* next;
}node;
int main()
{
int a;
int b;
int i, j;
int x, z;
int count;
//链表的创立
printf("请输入链表节点为几\n");
scanf_s("%d", &a);
printf("请输入链表数据\n");
int* p = (int*)malloc(a * sizeof(int));
for (j = 0; j < a; j++)
{
scanf_s("%d", &p[j]);
}
node* head = (node*)malloc(sizeof(node));
head->next = NULL;
for (i = 0; i < a; i++)
{
node* node1 = (node*)malloc(sizeof(node));
node1->date = p[i];
node1->next = head->next;
head->next = node1;
}
//链表的遍历
node* h;
h = head->next;
printf("你输入的链表如下\n");
while (h != NULL)
{
printf("%d ", h->date);
h = h->next;
}
//链表的插入
h = head->next;
printf("请输入插在第几个数后面");
scanf_s("%d", &x);
printf("请输入插入的数");
scanf_s("%d", &z);
count = 0;
while (h != NULL && count < x)
{
count++;
h = h->next;
if (count == x)
{
node* node1 = (node*)malloc(sizeof(node));
node1->date = z;
node1->next = head->next;
head->next = node1;
}
}
h = head->next;
while (h != NULL)
{
printf("%d ", h->date);
h = h->next;
}
}
```
修改处见注释,供参考:
#include<stdio.h>
#include<stdlib.h>
typedef struct list {
int date;
struct list* next;
}node;
int main()
{
int a;
int b;
int i, j;
int x, z;
int count;
//链表的创立
printf("请输入链表节点为几\n");
scanf_s("%d", &a);
printf("请输入链表数据\n");
int* p = (int*)malloc(a * sizeof(int));
for (j = 0; j < a; j++)
{
scanf_s("%d", &p[j]);
}
node* head = (node*)malloc(sizeof(node));
head->next = NULL;
for (i = 0; i < a; i++)
{
node* node1 = (node*)malloc(sizeof(node));
node1->date = p[i];
node1->next = head->next;
head->next = node1;
}
//链表的遍历
node* h,*hre; //修改
h = head->next;
printf("你输入的链表如下\n");
while (h != NULL)
{
printf("%d ", h->date);
h = h->next;
}
printf("\n");
//链表的插入
hre = head; //修改
h = head->next;
do{ //修改
printf("请输入插在第几个数后面");
scanf_s("%d", &x);
}while(x <= 0 || x > a); //修改
printf("请输入插入的数");
scanf_s("%d", &z);
count = 0;
while (h != NULL && count < x) //修改
{
count++;
hre = h; //修改
h = h->next;
} //修改
node* node1 = (node*)malloc(sizeof(node));
node1->date = z;
node1->next = hre->next; //修改
hre->next = node1; //修改
h = head->next;
while (h != NULL)
{
printf("%d ", h->date);
h = h->next;
}
return 0;
}