单向链表的删除及插入操作(以头插入法建立单向链表)
2015-10-05 22:08
507 查看
注意插入和删除操作中的限制约束条件。
class ListNode { ListNode next; int val; public ListNode(int x) { val = x; } } public class LinkList { private ListNode curr = null; public void appendToHead(int d) { ListNode tail = new ListNode(d); tail.next = curr; curr = tail; } public void printAppendToHead() { while (curr != null) { System.out.println(curr.val); curr = curr.next; } } public void delete(int d) throws Exception { //假设要删除的元素在该链表只出现一次。 if(curr == null) throw new Exception("empty LinkList"); if(curr.val == d) {curr = curr.next; return;} ListNode tmp = curr; while (tmp.next != null) { if(tmp.next.val == d) {tmp.next = tmp.next.next; return;} tmp = tmp.next; } return; } public void insert(int d) { //假设链表中的元素降序排列。 if(curr == null) {curr = new ListNode(d); return;} if(d > curr.val) { ListNode tmp = new ListNode(d); tmp.next = curr; curr = tmp; return; } ListNode currTmp = curr; while (currTmp.next != null) { if(d > currTmp.next.val) { ListNode tmp = new ListNode(d); tmp.next = currTmp.next; currTmp.next = tmp; return; } currTmp = currTmp.next; } ListNode tmp = new ListNode(d); currTmp.next = tmp; return; } public static void main(String[] args) throws Exception { int[] array = new int[] {1, 2, 2, 3, 4}; LinkList llist = new LinkList(); for (int i = 0; i < array.length; i++) { llist.appendToHead(array[i]); } // llist.delete(3); llist.insert(0); llist.printAppendToHead(); } }
相关文章推荐
- oracle7
- spring4+hibernate3
- Vim入门学习
- UVALive 7146 muliset<> 容器用法 防御塔
- sizeof面试题选
- android从应用到驱动之—camera(2)---cameraHAL的实现
- codeforces #323 c GCD Table(map)
- HDU 1070.Milk【最优解】【10月5】
- ubuntu和windows双系统修改启动顺序
- [译]新的CCSDS图像压缩推荐标准
- 数据结构实践——停车场模拟(栈和队列综合)
- Bootstrap CSS——按钮式下拉菜单
- 惯性导航之欧拉角与万向节死锁(三)
- 树状数组模板
- dispatch_once 写出 High Big Top 的单例类
- QT5 学习之路24---Qt 绘制系统简介
- tcp要点学习-断开连接
- 细说结构字节对齐
- Spark问题笔记5
- 玩转Google开源C++单元测试框架Google Test系列(gtest)