新建链表 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)) {}
好像leeetcode中已经定义了节点类型,直接用就好。
点击查看代码
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;
};
posted @ 2024-01-12 15:23  yun-che  阅读(34)  评论(0)    收藏  举报