新建链表 707

开始做的时候,错误吧List当作节点别名,而且开始当时没考虑给那个类增加size变量,导致判断链表中是否存在目标下标时,异常麻烦。
看了解答后,就把节点与list分开了,这时候又用到了,类初始化的问题。
点击查看代码
struct node{
int val;
node*next;
node(int value) : val(value), next(nullptr) {}
};
class MyLinkedList {
public:
MyLinkedList() : size(0), head(new node(0)) {}
点击查看代码
struct node{
int val;
node*next;
node(int value) : val(value), next(nullptr) {}
};
class MyLinkedList {
public:
MyLinkedList() : size(0), head(new node(0)) {}
int get(int index) {
if(index<0||index>=size){
return -1;
}
node*p=head;
while(index+1){
p=p->next;
--index;
}
return p->val;
}
void addAtHead(int val) {
node*q=new node(val);
q->next=head->next;
head->next=q;
++size;
}
void addAtTail(int val) {
node*q=new node(val);
node*p=head;
while(p->next){
p=p->next;
}
q->next=p->next;
p->next=q;
++size;
}
void addAtIndex(int index, int val) {
if(index<0||index==size){
addAtTail(val);
}
else if(index>size){return ;}
else{
node*q=new node(val);
node*p=head;
while(index){
p=p->next;
--index;
}
q->next=p->next;
p->next=q;
++size;
}
}
void deleteAtIndex(int index) {
if(index<0||index>=size){
return;
}
else{
size--;
node*p=head;
while(index){
p=p->next;
--index;
}
node*q=p->next;
p->next=q->next;
delete q;
}
}
private:
int size;
node*head;
};

浙公网安备 33010602011771号