当前位置: 首页 > news >正文

500元建站开发公司不建二次加压泵房

500元建站,开发公司不建二次加压泵房,南宁市营商环境建设局网站,邯郸市住房和城乡建设局官网今日学习目标 一、基础 链表 接下来说一说链表的定义。 链表节点的定义,很多同学在面试的时候都写不好。 这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定…

今日学习目标

一、基础

  • 链表

接下来说一说链表的定义。

链表节点的定义,很多同学在面试的时候都写不好。

这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。

而在面试的时候,一旦要自己手写链表,就写的错漏百出。

这里我给出C/C++的定义链表节点方式,如下所示:

// 单链表
struct ListNode {int val;  // 节点上存储的元素ListNode *next;  // 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {}  // 节点的构造函数
};

 有同学说了,我不定义构造函数行不行,答案是可以的,C++默认生成一个构造函数。

但是这个构造函数不会初始化任何成员变量,下面我来举两个例子:  

通过自己定义构造函数初始化节点:

ListNode* head = new ListNode(5);

 使用默认构造函数初始化节点:

ListNode* head = new ListNode();
head->val = 5;

所以如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值!

二、算法

 1. 203. 移除链表元素

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {while (head != NULL && head->val == val) {ListNode* p = head;head = head->next;delete p;}ListNode* cur = head;while (cur != NULL && cur->next != NULL) {if (cur->next->val == val) {ListNode* p = cur->next;cur->next = cur->next->next;delete p;} else {cur = cur->next;}}return head;}
};

2. 707.设计链表

#include <bits/stdc++.h>
using namespace std;class MyLinkedList {
public:// 定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};// 初始化链表MyLinkedList() {_dummyHead = new LinkedNode(0); // 这里定义的头结点 是一个虚拟头结点,而不是真正的链表头结点_size = 0;}// 获取到第index个节点数值,如果index是非法数值直接返回-1, 注意index是从0开始的,第0个节点就是头结点int get(int index) {if (index > (_size - 1) || index < 0) {return -1;}LinkedNode* cur = _dummyHead->next;while(index--){ // 如果--index 就会陷入死循环cur = cur->next;}return cur->val;}// 在链表最前面插入一个节点,插入完成后,新插入的节点为链表的新的头结点void addAtHead(int val) {LinkedNode* newNode = new LinkedNode(val);newNode->next = _dummyHead->next;_dummyHead->next = newNode;_size++;}// 在链表最后面添加一个节点void addAtTail(int val) {LinkedNode* newNode = new LinkedNode(val);LinkedNode* cur = _dummyHead;while(cur->next != nullptr){cur = cur->next;}cur->next = newNode;_size++;}// 在第index个节点之前插入一个新节点,例如index为0,那么新插入的节点为链表的新头节点。// 如果index 等于链表的长度,则说明是新插入的节点为链表的尾结点// 如果index大于链表的长度,则返回空// 如果index小于0,则在头部插入节点void addAtIndex(int index, int val) {if(index > _size) return;if(index < 0) index = 0;LinkedNode* newNode = new LinkedNode(val);LinkedNode* cur = _dummyHead;while(index--) {cur = cur->next;}newNode->next = cur->next;cur->next = newNode;_size++;}// 删除第index个节点,如果index 大于等于链表的长度,直接return,注意index是从0开始的void deleteAtIndex(int index) {if (index >= _size || index < 0) {return;}LinkedNode* cur = _dummyHead;while(index--) {cur = cur ->next;}LinkedNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;//delete命令指示释放了tmp指针原本所指的那部分内存,//被delete后的指针tmp的值(地址)并非就是NULL,而是随机值。也就是被delete后,//如果不再加上一句tmp=nullptr,tmp会成为乱指的野指针//如果之后的程序不小心使用了tmp,会指向难以预想的内存空间tmp=nullptr;_size--;}// 打印链表void printLinkedList() {LinkedNode* cur = _dummyHead;while (cur->next != nullptr) {cout << cur->next->val << " ";cur = cur->next;}cout << endl;}
private:int _size;LinkedNode* _dummyHead;};

3. 206.反转链表

class Solution {
public:ListNode* reverseList(ListNode* head) {if (head == NULL)return head;ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点dummyHead->next = head; // 将虚拟头结点指向head,这样方便后面做删除操作ListNode* p = dummyHead->next;ListNode* q;dummyHead->next = NULL;while (p != NULL) {q = p;p = p->next;q->next = dummyHead->next;dummyHead->next = q;}return dummyHead->next;}
};

4. 24. 两两交换链表中的节点

#include <iostream>
#include <bits/stdc++.h>
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};
int main(){return 0;
}
ListNode* swapPairs(ListNode* head) {if (head==NULL || head->next==NULL) {return head;}ListNode *dummyHead = new ListNode(0);dummyHead->next = head;ListNode *cur  = dummyHead;ListNode *p,*q;while (cur->next!=nullptr &&cur->next->next!=nullptr) {p = cur->next;q = cur->next->next->next;cur->next = p->next;cur->next->next = p;cur->next->next->next = q;cur = cur->next->next;}return dummyHead->next;
}

5. 19.删除链表的倒数第N个节点

#include <bits/stdc++.h>
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};
int main(){return 0;
}
ListNode* removeNthFromEnd(ListNode* head, int n) {if(head==NULL) return NULL;ListNode *dummyNode = new ListNode();dummyNode->next = head;ListNode *p,*q;p=q=dummyNode;while (n--&&p!=nullptr) {p=p->next;}p=p->next;while(p!=nullptr&&q!=nullptr){p=p->next;q=q->next;}ListNode *temp = q->next;q->next = q->next->next;delete temp;return dummyNode->next;
}

6. 面试题 02.07. 链表相交

#include <bits/stdc++.h>
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};
int main(){return 0;
}
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {int aLen = 0;int bLen = 0;ListNode *pa = headA;ListNode *pb = headB;while(pa!=nullptr){aLen++;pa = pa->next;}while(pb!=nullptr){bLen++;pb = pb->next;}int k;pa = headA;pb = headB;if(aLen<=bLen){k = bLen - aLen;while (k-- && pb!=nullptr) {pb = pb->next;}while(pb!=nullptr){if(pa==pb){return pb;}pa = pa->next;pb = pb->next;}}else{k = aLen - bLen;while (k-- && pa!=nullptr) {pa = pa->next;}while(pa!=nullptr){if(pa==pb){return pa;}pa = pa->next;pb = pb->next;}}return NULL;
}
http://www.yayakq.cn/news/785296/

相关文章:

  • 手机营销软件优化大师win7
  • 中国风网站建设手机网站cms有哪些
  • 做网站图片要求高吗医疗网站建设资讯
  • php做的知名网站教学网站建设目的
  • 网上注册公司核名流程seo培训学院
  • 福州网站开发定制狼雨seo教程
  • 怎么做网站源码成都关键词
  • 南坪网站建设哪个网站做ppt能赚钱
  • 创意手机网站免费简历模板在线下载
  • 郑州专业网站设计公司建站哪个平台好
  • 公司网站建设 邮箱纪梵希网站设计分析
  • 淘宝上开个网站建设网站联系我们模块怎么做
  • 开发出来的电子商务网站域名郑州做网站排名
  • 网站建设公司的出路建筑公司网站广告宣传语
  • html设计网站代理一个手游需要多少钱
  • 定兴县住房和城乡建设局网站frontpage网站模板下载
  • 旅游公司网站设计有赞商城
  • 西部数码网站开发管理助手深圳专业做网站的
  • 网站开发需要兼容到ie几招商网站的建设目的
  • 北京大兴专业网站建设公司关键词排名监控批量查询
  • 购物 网站建设的市场分析大连外贸网站制作
  • 恩施兴州建设工程责任有限公司网站上海短视频培训机构
  • 网站注册域名位置wordpress hotnews
  • 麻将网站怎么做的闵行网站推广
  • 图书馆 网站建设巨鹿企业做网站
  • 网站首页包含的内容北京万户网络技术有限公司
  • 国家重点建设网站com是什么网站
  • 免费php网站源码西安网站制作顶尖公
  • 浙江省城乡住房建设部网站深圳企业营销型网站
  • 建设网站通过什么赚钱怎么把网站上传到域名