数据结构的题,从网上找到的实现方式,先记录下来。

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);
*/

最新文章

  1. iOS开发小技巧--TableView Group样式中控制每个section之间的距离
  2. 使用mysql服务来记录用户的反馈
  3. Nginx 禁用IP IP段
  4. Windows Azure Platform (一) 云计算的出现
  5. Excel引用
  6. 管理http服务的脚本
  7. window.open || window.showModalDialog || window.showModelessDialog
  8. iOS 7 - Auto Layout on iOS Versions prior to 6.0
  9. Kinect SDK C++ - 2. Kinect Depth Data
  10. ArcEngine下纵断面图的绘制
  11. 如何在asp.net页面使用css和js
  12. 12-JSP&amp;EL&amp;JSTL
  13. 使用JSDoc自动生成代码文档
  14. Linux DMA Engine framework(3)_dma controller驱动
  15. python一个简单的打包例子
  16. JS设计模式(14)适配器模式
  17. Serial Wire Viewer (SWV)
  18. WAS6.1连接SQL Server2008数据库连接池配置
  19. delegate 和 event
  20. Android的Overlay机制

热门文章

  1. NHibernate 01 [简述]
  2. [javascript]复制到剪切板
  3. BloomFilter ——大规模数据处理利器
  4. Jmeter用表格查看结果
  5. .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  6. 如何用OpenCV跟踪鼠标操作
  7. DZ X3 和 ECshop 通过uc_server实现会员同步整合教程.
  8. 我的 Git 学习过程
  9. How to install torcs package in Debian
  10. ubuntu15.10下code::blocks设置运行窗口为gnome命令行