leetcod上刷链表题时,如果你需要调试的话,在leetcod上很不方便,使用cout来看结果也不是一个好办法,特别是对于递归这种算法,不一步一步的调试很难搞懂。这时候就需要在本地的VS中调试,但是你需要手搭一些环境,比如说链表的创建,环链表的创建,以及链表的显示,有些时候这个东西很繁琐甚至比题目还难。下面给出我的环境搭建代码方便大家参考,这样就直接可以再VS中输入输出了。当然我也问了一些大佬,他们建议还是leetcod上在线做题,实在搞不懂了可以这样本地调试。
C++在VS就leetcod链表题的环境搭建为了方便,这是写在一个头文件中的 ,也可以直接复制到cpp文件中。
#pragma once
#include
using namespace std;
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) {}
};
//单链表创建
ListNode* LinkList(int nums[],int n) {
ListNode *L=new ListNode;//创建头结点
ListNode *r = L;//动态尾节点
for (int i = 0; i < n; i++)
{
ListNode* p = new ListNode;
p->val = nums[i];
r->next = p;
r = p;
}
r->next = NULL; //表示当前链表结束
return L->next;//返回无头结点的链表
//return L;//返回有头结点的链表
}
//环 单链表创建 n=0创建空链表 pos为指定入环节点
ListNode* cLinkList(int nums[], int n, int pos) {
ListNode *L = new ListNode;//创建头结点
ListNode *r = L;//动态尾节点
ListNode * c=NULL;//定义入环节点,暂时让其为空
//ListNode * p, q;
//p = L;
for (int i = 0; i < n; i++)
{
ListNode* p = new ListNode;
p->val = nums[i];
r->next = p;
r = p;
if (i==pos) c = p;//记录入环节点的位置
}
r->next = c;//尾节点指针指向入环节点
return L->next;//返回无头结点的链表
//return L;//返回有头结点的链表
}
//链表显示函数
void display(ListNode*L) {
ListNode* temp = L;
int e;
cout << "该链表的遍历依次为:";
while (temp != NULL)
{
e = temp->val;
cout << e << " ";
temp = temp->next;
}
cout << endl;
}
然后是23题中一个双链表有交点的创建方法。本人是用vector容器存储的,因为需要输出2个链表。
vector<listnode*> couplelinklist(int numsa[], int skipa, int na, int numsb[], int skipb) {
listnode *la = new listnode;//创建a的头结点
listnode *ra = la;//动态尾节点
listnode * c = null;//定义相交节点,暂时让其为空
for (int i = 0; i < na; i++)//a链创建
{
listnode* p = new listnode;
p->val = numsa[i];
ra->next = p;
ra = p;
if (i == skipa)c = p;//记录相交节点
}
ra->next = null; //表示当前链表结束
listnode *lb = new listnode;//创建b的头结点
listnode *rb = lb;//动态尾节点
for (int i = 0; i < skipb+1; i++)//b链创建
{
listnode* p = new listnode;
p->val = numsb[i];
rb->next = p;
rb = p;
}
ra->next = c;
vector<listnode*> listab;
listab.push_back(la->next);
listab.push_back(lb->next);
return listab;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)