leetcode707
数据结构的题,从网上找到的实现方式,先记录下来。
class MyLinkedList {
public:
/** Initialize your data structure here. */
MyLinkedList() {
LinkedList = ;
}
ListNode *LinkedList;
/** Get the value of the index-th node in the linked list. If the index is invalid, return -1. */
int get(int index) {
int i = ;
ListNode *head = LinkedList;
while (head&&i<index) {
head = head->next;
i++;
}
if (head&&i == index)
return head->val;
else
return -;
}
/** Add a node of value val before the first element of the linked list. After the insertion, the new node will be the first node of the linked list. */
void addAtHead(int val) {
ListNode *head = (ListNode *)malloc(sizeof(ListNode));
head->next = LinkedList;
head->val = val;
LinkedList = head;
}
/** Append a node of value val to the last element of the linked list. */
void addAtTail(int val) {
ListNode *head = LinkedList;
ListNode *tmp = (ListNode *)malloc(sizeof(ListNode));
tmp->next = ;
tmp->val = val;
if (!head)
{
LinkedList = tmp;
return;
}
while (head->next)
{
head = head->next;
}
head->next = tmp;
}
/** Add a node of value val before the index-th node in the linked list. If index equals to the length of linked list, the node will be appended to the end of linked list. If index is greater than the length, the node will not be inserted. */
void addAtIndex(int index, int val) {
int i = ;
ListNode *head = LinkedList;
if (!head&&index==)
{
ListNode *tmp = (ListNode *)malloc(sizeof(ListNode));
tmp->val = val;
tmp->next = ;
LinkedList = tmp;
return;
}
while (head&&i<index - )
{
head = head->next;
i++;
}
if (head&&head->next == )
{
ListNode *tmp = (ListNode *)malloc(sizeof(ListNode));
tmp->val = val;
tmp->next = ;
head->next = tmp;
}
else if (i == index - && head&&head->next)
{
ListNode *tmp = (ListNode *)malloc(sizeof(ListNode));
tmp->val = val;
tmp->next = head->next;
head->next = tmp;
}
}
/** Delete the index-th node in the linked list, if the index is valid. */
void deleteAtIndex(int index) {
ListNode *head = LinkedList;
int i = ;
while (head&&i<index - )
{
head = head->next;
i++;
}
if (head == )
return;
if (head->next == && index == )
{
//只有一个节点的情况
LinkedList = ;
return;
}
if (head->next)
{
ListNode *tmp = head->next;
head->next = tmp->next;
free(tmp);
}
}
};
/**
* 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);
*/
leetcode707的更多相关文章
- [Swift]LeetCode707. 设计链表 | Design Linked List
Design your implementation of the linked list. You can choose to use the singly linked list or the d ...
- LeetCode707:设计链表 Design Linked List
爱写bug (ID:iCodeBugs) 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/ ...
- Leetcode707.Design Linked List设计链表
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- LeetCode707 设计链表
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- LeetCode通关:听说链表是门槛,这就抬脚跨门而入
分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/youngyangyang04/leetcode-master https://github.com/ch ...
随机推荐
- 2D game engine essentials [to be continued...]
All 2D Game Engines/Frameworks are trying to solve the same problem(s). Languages don't matter- they ...
- 升级到XE10
下午抽空从XE7升级到XE10,用的是lsuper大侠的Dx10Update1_23.0.21418.4207,用到的控件基本装全乎了. 过程中也碰到点问题,记录下子. 1. cnPack结构匹配线与 ...
- [译]缓解BEAST对TLS攻击的方式
原文链接:https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls 原 ...
- Codeforces 28C Bath Queue 【计数类DP】*
Codeforces 28C Bath Queue LINK 简要题意:有 n 个人等概率随机进入 m 个房间,一个房间可以有多个人,第 i 个房间有 ai 个水龙头,在一个房间的人要去排队装水,他们 ...
- (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件.配置.应用启动流程代码和界面代码.然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始 ...
- Visual->UIElement->FrameworkElement,带来更多功能的同时也带来了更多的限制
在 WPF 或 UWP 中,我们平时开发所遇到的那些 UI 控件或组件,都直接或间接继承自 Framework.例如:Grid.StackPanel.Canvas.Border.Image.Butto ...
- iOS客户端打包自动集成weex方案
我司在2017年已经部分使用weex开发,然而开发weex 的人都知道,在前端开发完成之后需要集成到 安卓和iOS 各个app 之中.每次修改都要重新copy给各个app 负责人去打包,因此这是一种重 ...
- 《DSP using MATLAB》示例Example 9.5
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- CentOS 7.0 yum安装Apache、PHP和MySQL
centos7默认将mariadb视作mysql. p.s.因为mysql被oracle收购后,原作者担心mysql闭源,所以又写了一个mariadb,这个数据库可以理解为mysql的分支. 卸载ma ...
- Promise详解
前言 && 基础概念 Promise 是解决 JS 异步的一种方案,相比传统的回调函数,Promise 能解决多个回调严重嵌套的问题. Promise 对象代表一个异步操作,有三种状态 ...