欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

2025/9/16 0:12:27 来源:https://blog.csdn.net/qq_64446190/article/details/140295736  浏览:    关键词:C语言笔记30 •单链表经典算法OJ题-2.移除链表元素•

移除链表元素

1.问题

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

2.代码实现:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>typedef int SLTDataType;typedef struct SListnode
{SLTDataType val;struct SListnode* next;
}ListNode;ListNode* createNode(SLTDataType val)
{ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));if (newnode == NULL){perror("malloc");exit(1);}newnode->val = val;newnode->next = NULL;return newnode;
}struct ListNode* removeElements(struct ListNode* head, int val)
{ListNode* pur = head;ListNode* newhead, *newtail;//创建新链表newhead = newtail = NULL;//表头 表尾初始化while (pur){if (pur->val != val){if (newhead == NULL){newhead = newtail = pur;}else{newtail->next = pur;newtail = newtail->next;}}pur = pur->next;}if (newtail){newtail->next=NULL;}return newhead;
}int main()
{ListNode* node1, * node2, * node3, * node4, * node5, * node6, * node7;node1        =        createNode(1);node2 = node1->next = createNode(2);node3 = node2->next = createNode(6);node4 = node3->next = createNode(3);node5 = node4->next = createNode(4);node6 = node5->next = createNode(5);node7 = node6->next = createNode(6);//创建一个链表ListNode* newhead = removeElements(node1, 6);//移除链表元素:6while (newhead){printf("%d ", newhead->val);newhead = newhead->next;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词