题解 | #牛牛的链表添加节点#
牛牛的链表添加节点
https://www.nowcoder.com/practice/e33b79c2e15a41f9b541e73cd256124a
#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; }
主要就是链表元素的插入:此题较为简单,还没有用到头结点,熟记插入代码“先右后左”。