day1.链表的操作


   一、c++中链表的结构体定义。

struct LinkedNode{

        int val;

        LinkedNode* next;

        ListNode() : val(0), next(nullptr) {} // 无初始值构造
        ListNode(int x) : val(x), next(nullptr) {} //有初始值构造
        ListNode(int x, ListNode *next) : val(x), next(next) {} //既有初始值,也有初始指针

    };

 二、定义一个链表

    MyLinkedList() {

        dummyhead = new LinkedNode(0);

        linksize = 0;

    }

      三、获取值

 int get(int index) {
        if(index < 0 || index > linksize - 1){
            return -1;
        }
        LinkedNode* cur = dummyhead->next;
        while(index){
            cur = cur->next;
            index--;
        }
        return cur->val;
    }

      四、添加值

void addAtHead(int val) {
        LinkedNode* newnode = new LinkedNode(val);
        newnode->next = dummyhead->next;
        dummyhead->next = newnode;
        linksize++;
    }

      五、在末尾添加值

 void addAtTail(int val) {
        LinkedNode* newnode = new LinkedNode(val);
        LinkedNode* cur = dummyhead;
        while(cur->next != NULL){
            cur = cur->next;
        }
        newnode->next = cur->next;
        cur->next = newnode;
        linksize++;
    }

      六、在index前加值

 void addAtIndex(int index, int val) {

        if(index > linksize) return; 

        LinkedNode* newnode = new LinkedNode(val);

        LinkedNode* cur = dummyhead;

        while(index){

            cur = cur->next;

            index--;

        }

        newnode->next = cur->next;

        cur->next = newnode;

        linksize++;

    }

      七、删除值

void deleteAtIndex(int index) {

        LinkedNode* cur = dummyhead;

        if(index >= linksize || index < 0) return;

        while(index){

            cur = cur->next;

            index--;

        }

        LinkedNode* tmp = cur->next;

        cur->next = cur->next->next;

        delete tmp;

        linksize--;

    }

你可能感兴趣的:(c++知识点,c++,leetcode)