题解 | #牛牛的链表删除#
牛牛的链表删除
https://www.nowcoder.com/practice/d3df844baa8a4c139e103ca1b1faae0f
#include <stdio.h> #include<stdlib.h> typedef int data_t; typedef struct node { data_t data; struct node *next; }linknode,*linklist; linklist list_create() { linklist H = (linklist)malloc(sizeof(linknode)); if(H == NULL) { printf("malloc is failed"); return NULL; } H->data = 0; H->next = NULL; return H; } void list_insert(linklist H) { linklist L = (linklist)malloc(sizeof(linknode)); linklist h = H; if(L == NULL) { printf("malloc is failed"); return ; } int value; scanf("%d",&value); L->data = value; L->next = NULL; while(h->next != NULL) h = h->next; h->next = L; } void list_show(linklist H) { linklist h = H->next; while (h->next != NULL) { printf("%d ",h->data); h = h->next; } printf("%d ",h->data); } void list_delete(linklist H,int value) { linklist h = H; linklist h1; while (h->next != NULL) { if(h->next->data == value &&h->next->next!=NULL) { linklist h2 = h->next; h->next = h->next->next; free(h2); } h1 = h; h = h->next; } if(h1->next->data == value) h1->next = NULL; } int main() { int i,n,m; linklist H = list_create(); scanf("%d %d",&n,&m); for(i = 0;i<n;i++) list_insert(H); list_delete(H,m); list_show(H); return 0; }