#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode* next;
}ListNode;
ListNode* Creat_list(int* arr,int n)
{
ListNode* La = (ListNode*)malloc(sizeof(ListNode));
La -> data = arr[0];
La -> next = NULL;
ListNode* r = La;
for(int i = 1; i<n; i++)
{
ListNode* s = (ListNode*)malloc(sizeof(ListNode));
s -> data = arr[i];
s -> next = NULL;
r -> next = s;
r = s;
}
return La;
}
ListNode* InsertList(ListNode* La,int n,int m)
{
if(m > n) return La;
else
{
ListNode* pa = La;int count = 1;
while(count < m)
{
pa = pa -> next;
count++;
}
ListNode* s = (ListNode*)malloc(sizeof(ListNode));
s -> data = m;
s -> next = pa -> next;
pa -> next= s;
}
return La;
}
void PrintList(ListNode* La)
{
ListNode* pa = La;
while(pa)
{
printf("%d ",pa -> data);
pa = pa -> next;
}
}
int main() {
int n = 0,m = 0;
scanf("%d%d",&n,&m);
int arr[n];
for(int i = 0; i<n;i++)
scanf("%d",&arr[i]);
ListNode *La = Creat_list(arr,n);
La = InsertList(La,n,m);
PrintList(La);
return 0;
}
主要就是链表元素的插入:此题较为简单,还没有用到头结点,熟记插入代码“先右后左”。

京公网安备 11010502036488号