企业网站建设搜集资料,9377页游官网,网站设计与制作公司,怎么查看一个网站是谁做的之前我们对C语言进行了一定的学习#xff0c;有了一些基础之后#xff0c;我们就可以学习一些比较基础的数据结构算法题了。这部分的知识对于我们编程的深入学习非常有用#xff0c;对于一些基本的算法#xff0c;我们学习之后#xff0c;就可以参加一些编程比赛了#x… 之前我们对C语言进行了一定的学习有了一些基础之后我们就可以学习一些比较基础的数据结构算法题了。这部分的知识对于我们编程的深入学习非常有用对于一些基本的算法我们学习之后就可以参加一些编程比赛了蓝桥杯。 学习前提 1.至少掌握一门计算机编程语言。 2.有一定的数学基础和逻辑思考能力。 如好学好数据结构 1.复习好C语言以及C的基础知识尤其是指针这一块的知识当然使用别的计算机编程语言也可以你完全可以把本教程提供的代码当作伪代码来学习。 2.阅读时建议顺序阅读多思考理解不要轻易去大量的复制粘贴代码虽说这也是一个技巧代码结合图示的学习方法是相当重要的弄懂原理才是编写代码的基础。 3.你可以做一些适当的摘抄虽然有的时候笔记记一次以后不再阅读但是在写字的时候也是一种加强记忆的过程笔记的过程就可以加强你的理解。 希望你不负此行。 好了今天带大家刷几道牛客网上的算法题练练手。
单链表相关经典算法OJ题1 203. 移除链表元素 - 力扣LeetCodehttps://leetcode.cn/problems/remove-linked-list-elements/description/ 这里给大家提供两个思路 思路一遍历原链表遇见val就删除val节点的操作。 思路二创建一个新链表遍历原链表找不为val的节点尾插到新链表中。 由于第一个思路改变指针指向非常麻烦我们选用思路二解决问题。
1.首先newnode和newtail都指向头节点 2. 利用pcur遍历原链表若节点的值不为val则尾差到新链表中newtail往后走一格如果值为val则不进行尾插。遍历结束应为 返回newhead即可得到新的链表。 typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {ListNode*newhead,*newtail;newheadnewtailNULL;ListNode*pcurhead;while(pcur){//判断是否为valif(pcur-val!val){if(newheadNULL){newheadnewtailpcur;}else{newtail-nextpcur;newtailnewtail-next;}}pcurpcur-next;}if(newtail){newtail-nextNULL;}return newhead;
} 单链表相关经典算法OJ题2
876. 链表的中间结点 - 力扣LeetCodehttps://leetcode.cn/problems/middle-of-the-linked-list/description/ 思路一统计链表的节点个数通过除2得到中间节点。 思路二快慢指针慢指针每次走一步快指针每次走两步当快指针走到尾节点时慢指针刚走到中间节点。 快慢指针是一个比较重要的算法技巧我们应当熟悉掌握这个算法的技巧。 typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {ListNode *slow,*fast;slowfasthead;while(fastfast-next){slowslow-next;//fastfast-next-next;//}return slow;
} 这样就通过了。
单链表相关经典算法OJ题3
206. 反转链表 - 力扣LeetCodehttps://leetcode.cn/problems/reverse-linked-list/description/ 思路一创建新链表遍历原链表的节点将其插入到新的链表中。 思路二创建三个节点分别记录前驱节点当前节点后继节点改变原链表指针指向 我们这里采用思路二解题 typedef struct ListNode ListNode;
struct ListNode* reverseList(struct ListNode* head) {if(headNULL){return head;}//创建三个节点ListNode* n1,*n2,*n3;n1NULL,n2head,n3head-next;//遍历原链表修改指针的指向ListNode*pcurhead;while(n2){//修改n2的指向n2-nextn1;//修改三个指针的位置n1n2;n2n3;if(n3){n3n3-next;}}return n1;
} 好了今天就分享这些了感谢大家观看有问题随时评论区提问哦。