题解 | #牛牛的链表删除#
牛牛的链表删除
https://www.nowcoder.com/practice/d3df844baa8a4c139e103ca1b1faae0f
//数据结构 删除结点(+尾插法) #include<stdio.h> #include<stdlib.h> typedef struct LNode{ int data; //存放元素值 struct LNode *next; //指向后继节点 }LNode,*Linklist; //尾插法 Linklist Creat_list(int count){ Linklist head = (Linklist)malloc(sizeof(LNode)); //定义头指针 Linklist node=NULL; //定义工作指针 Linklist end=NULL; //定义尾指针 head->next = NULL; end=head; // int count,m; int data; //存放当前结点数据 // scanf("%d",&count); //存放数组长度 // scanf("%d",&m); //存放要删除的元素 for(int i=0;i<count;i++){ scanf("%d",&data); // if(data!=m){ node = (LNode*)malloc(sizeof(LNode)); node->data = data; //存放结点数据域 end->next = node; //将新结点尾插到链表 end = node; //更新尾结点 // } } end->next = NULL; return head; } //删除结点 void del(LNode *L,int m){ LNode *p=L,*q=L->next; while(q){ if(q->data == m){ p->next=q->next; free(q); q=p->next; } else{ p=q; q=q->next; } } } void output(Linklist head){ Linklist a = head->next; while(a){ printf("%d",a->data); printf(" "); a=a->next; } } int main(){ int n,m; scanf("%d",&n); scanf("%d",&m); Linklist head=Creat_list(n); del(head,m); output(head); }