您的位置:首页 > 教育 > 培训 > 输入姓名查个人信息_蒙特网设计公司_网络推广引流方式_今日新闻大事

输入姓名查个人信息_蒙特网设计公司_网络推广引流方式_今日新闻大事

2025/2/28 21:23:33 来源:https://blog.csdn.net/qq_73301411/article/details/144298265  浏览:    关键词:输入姓名查个人信息_蒙特网设计公司_网络推广引流方式_今日新闻大事
输入姓名查个人信息_蒙特网设计公司_网络推广引流方式_今日新闻大事

构造函数和析构函数是否可以是虚函数?

构造函数不可以:

析构函数可以:如果在类的继承问题中,不将基类的析构函数设置成虚函数,那么基类指针或者引用指向派生类时,就只会调用基类的析构函数,无法调用派生类的析构函数,会造成内存泄漏,所以析构函数可以设置成虚函数,并且是很有必要的。

什么是多态性?C++中如何实现多态?多态性的好处是什么? 

        多态性是C++的面向对象编程中的特性之一,它允许同一个接口或者函数在上下文中出现不同的行为,允许对象根据自己的特性来执行自己的行为。

        C++中可以实现两种多态:一种是静态多态,通过函数重载、运算符重载和模版来实现,此类多态在程序编译时就能确定。另一种是动态多态,通过虚函数和基类指针或引用来实现。

        多态性的好处是:方便拓展代码、提高可维护性(需要拓展代码可以直接创建一个新的派生类继承要拓展的类,无需关心已有的代码),灵活性、代码可复用(通过统一的基类指针调用派生类的方法)

重排链表

链接:重排链表

方法一:线性表+双指针:把所有节点的地址存入线性表,双指针从头尾向内遍历重组

时间复杂度on空间复杂度on


class Solution {
public:void reorderList(ListNode* head) {vector<ListNode*> v;ListNode* l = head;while (l) {v.push_back(l);l=l->next;}int i = 0,j = v.size()-1;while(i<j){if(v[i]->next==v[j]){v[j]->next=nullptr;break;}v[i]->next = v[j];v[j]->next = v[i+1];if(v[i+1]->next==v[j]){v[i+1]->next=nullptr;break;}i++;j--;}}
};

方法二:寻找中间节点+反转中间结点后的链表+双指针重组

class Solution {
public://获取中间节点 奇数长度:正中间的节点 偶数长度:中间的两个节点中的第二个ListNode* getMid(ListNode* root){ListNode* slow = root,*fast = root;while(fast&&fast->next){slow = slow->next;fast = fast->next->next;}return slow;}//反转链表ListNode* reverseList(ListNode *root){ListNode *pre = nullptr,*cur = root;while(cur){ListNode *nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}return pre;}void reorderList(ListNode* head) {ListNode *mid = getMid(head);//获得中间节点ListNode *head2 = reverseList(mid);//反转后返部分并获得后半部分头结点prewhile(head2->next)//head2->next是因为head2对应的链表短于head对应的链表 //如果不是head2的next就会出现最后一个节点指向自己的情况{ListNode* headnxt = head->next;ListNode* head2nxt = head2->next;//获取两个节点的nxt节点head->next = head2;head2->next = headnxt;//重组链表head = headnxt;head2 = head2nxt;//迭代}}
};

版权声明:

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

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