第一章链表
2016-01-28 13:35
183 查看
带头结点的单链表
//节点类 class Node<AnyType>{ public AnyType data; public Node<AnyType> next; public Node(){ data=null; next=null; } public Node(AnyType data){ this.data=data; next=null; } public Node(AnyType data,Node a){ this.data=data; next=a; } public Node(Node a){ next=a; } } //带头结点的单链表 public class MyLiskedList<AnyType> { private int theSize; //表的大小 private Node<AnyType> headNode; //头节点 public MyLiskedList(){ Node<AnyType> p=new Node(); headNode=p; theSize=0; } public boolean add(AnyType idx){ add(theSize,idx); return true; } public void add(int size,AnyType a){ Node<AnyType>newNode=new Node(a); Node<AnyType> p=headNode; for(int i=0;i<size;i++){ p=p.next; } newNode.next=p.next; p.next=newNode; theSize++; } public AnyType remove(int idx){ if(idx<0||idx>theSize) return null; Node<AnyType>p=headNode; AnyType e = null; for(int i=0;i<idx;i++){ p=p.next; } p.next=p.next.next; theSize--; return e; } public AnyType get(int idx){ return getNode(idx).data; } private Node<AnyType>getNode(int idx){ if(idx<0||idx>theSize){ System.out.println("超出范围"); return null; } Node<AnyType> p=headNode; for(int i=0;i<idx+1;i++){ p=p.next; } return p; } public static void main(String[]args){ MyLiskedList<String> a=new MyLiskedList<String>(); a.add("a"); a.add("b"); a.add("c"); a.add("d"); a.remove(2); for(int i=0;i<3;i++) System.out.println(a.get(i)); } }
相关文章推荐
- 简单工厂模式-计算器控制台程序
- 6.3 Controllers -- Managing Dependencies Between Controllers
- Collection
- window下的netstat
- Swift语法_字符和字符串
- Android面试题(1)
- IONIC 竖屏显示(屏幕不旋转)
- PostgreSQL COPY 导入/导出数据
- Log4j2完全讲解 附项目集成源码下载
- php 设计模式_命名空间的巧用
- hackyviewpager有什么用
- Navicat设定mysql定时任务
- 正则表达式
- PyInstaller把.py转为.exe
- Android中通知的使用
- 广播注册和添加权限过滤广播
- Android Studio的基本设置
- 真他妈扯淡的表结构设计
- 旋转卡壳模板
- effective java 读书笔记(五)