包数据结构算法。链表;/* *定义节点 *链表由节点构成 */公开课Node{ 私人E E;//数据的数据 私人Node 下一个;//指向下一个节点 公共节点(){ } 公共节点(E E) { 这一点。e=e; } 公共Node getNext () { 返回下一个; } 公共空间setNext (Node 下一个){ 这一点。下一个=下一个; } 公共E getE () { 返回e; } 公共空间的汤(E E) { 这一点。e=e; } }
包数据结构算法。链表;/* *定义实现类MyLinkedList *实现链表的基本功能:增删改查 */公开课MyLinkedList{//声明头节点尾节点 私人Node 头; 私人Node 最后一次;//链表的大小 私人int大小; 私人int modcount;//计算被修改的次数 公共MyLinkedList () { 头=new Node ();//实例化头结点 去年=头; }/* *返回单链表中存储的元素总数 */公共int大小(){ 返回大小; }/* *获取指定索引位置的节点对象 */公共Node get (int指数){ 如果(指数& lt;0 | |指数比;大小- 1) 返回null; Node 节点=head.getNext();//将头结点的下一个节点赋给节点 for (int i=0;我& lt;指数;我+ +){ 节点=node.getNext();//获取节点的下一个节点 } 返回节点; }/* *获取指定索引位置的数据 */公共E getValue (int指数){ 如果(指数& lt;0 | |指数比;大小- 1) 返回null; Node 节点=(指数); 返回node.getE (); }/* *增加元素 */公共空间添加(E E) { Node 节点=new Node (e);//以e实例化一个节点 last.setNext(节点);//往尾节点后追加节点 去年=节点;//该节点设为最后一个节点 大小+ +; modcount + +; }/* *指定位置插入元素,返回插入的节点数据 */公共E添加(int指数E E) { 如果(指数& lt;0 | |指数比;大小- 1) 返回null; Node 节点=new Node (e);//实例化一个节点//找到插入的原节点 Node oldNode=(指数); 如果(指数==0){//当索引为0时 head.setNext(节点); 其他}{//找到插入节点的上一个 Node bNode=(指数- 1); bNode.setNext(节点); } node.setNext (oldNode); 大小+ +; modcount + +; 返回oldNode.getE (); }/* *删除指定的节点e,并返回删除节点的数据 */公共E删除(int指数){ 如果(指数& lt;0 | |指数比;大小- 1) 返回null; 如果(指数==0){//当索引为1,令头结点的下一个节点为头结点 Node 节点=head.getNext (); head.setNext (node.getNext ()); }//获取要删除节点的前一个节点 Node bNode=(指数- 1);//获取要删除的节点 Node 节点=bNode.getNext ();//获取要删除节点的下一个节点 Node nNode=Node.getNext ();//删除该节点 bNode.setNext (nNode);//清除节点的下一个节点 Node.setNext(空); 大小,; modcount + +; 返回Node.getE();//返回节点中的数据域 }/* *修改指定位置的数据域并返回修改后的数据 */公共E组(int指数E E) { 如果(指数& lt;0 | |指数比;大小- 1) 返回null;//获取指定位置的原节点 Node 节点=(指数); node.setE (e); modcount + +; 返回node.getE (); } }
包数据结构算法。链表;/* *定义测试类 */公开课MyLinkedListTest { 公共静态void main (String [] args) { MyLinkedList,列表=new MyLinkedList<的在();//测试 list.add(“一”); list.add(“两个”); list.add(“三”); list.add(“四”); list.add (0,“newone”); list.add (1、“newtwo”); for (int i=0;我& lt;list.size ();我+ +){ System.out.print (list.getValue(我)+ " "); }//测试 System.out.println (); 列表。集(0," 111 "); 列表。集(1、“222”); System.out.println (list.getValue (0) + " " + list.getValue (1));//测试删除 System.out.println (); list.delete (1); for (int i=0;我& lt;list.size ();我+ +){ System.out.print (list.getValue(我)+ " "); } } }
运行结果如下: