707链表-设计链表
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了707链表-设计链表相关的知识,希望对你有一定的参考价值。
题目
思路
设置一个头结点来统一方式
代码:
class MyLinkedList
public:
//定义链表结点结构体
struct LinkNode
int val;
LinkNode* next;
LinkNode(int val):val(val), next(nullptr)
;
//初始化链表
MyLinkedList()
//定义一个头结点
dummyHead = new LinkNode(0);
size = 0;
//获取到第index个结点数值
int get(int index)
//先判断溢出
if(index > (size - 1) || index < 0)
return -1;
LinkNode* cur = dummyHead->next;
while(index)
cur = cur->next;
index--;
return cur->val;
//在链表最前面插入一个结点
void addAtHead(int val)
LinkNode* newNode = new LinkNode(val);
newNode->next = dummyHead->next;
dummyHead->next = newNode;
size++;
//在链表末尾插入一个结点
void addAtTail(int val)
LinkNode* newNode = new LinkNode(val);
LinkNode* cur = dummyHead;
while(cur->next != nullptr)
cur = cur->next;
cur->next = newNode;
size++;
//在链表第index个结点之前添加值为val的结点
void addAtIndex(int index, int val)
if(index > size) return ;
if(index < 0 ) index = 0;
LinkNode* newNode = new LinkNode(val);
//注意这里和获取第index个结点的值不一样
LinkNode* cur = dummyHead;
while(index)
cur = cur->next;
index--;
//此时cur指向第index结点的前一个结点
newNode->next = cur->next;
cur->next = newNode;
size++;
//删除第index个结点
void deleteAtIndex(int index)
if(index > (size - 1) || index < 0)
return ;
LinkNode* cur = dummyHead;
while(index)
cur = cur->next;
index--;
//此时cur指向第index结点的前一个结点
LinkNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
size--;
private:
int size;
LinkNode* dummyHead;
;
/**
* Your MyLinkedList object will be instantiated and called as such:
* MyLinkedList* obj = new MyLinkedList();
* int param_1 = obj->get(index);
* obj->addAtHead(val);
* obj->addAtTail(val);
* obj->addAtIndex(index,val);
* obj->deleteAtIndex(index);
*/
以上是关于707链表-设计链表的主要内容,如果未能解决你的问题,请参考以下文章