数据结构—单链表
来源:互联网 发布:淘宝海外购物 编辑:程序博客网 时间:2024/05/21 11:04
public class singleLinkedList<T> {/** * 结点类 */private static class Node<T>{T nodeValue;//数据域Node<T> nextNode;//指针域Node(T nodeValue,Node<T> nextNode){this.nodeValue=nodeValue;this.nextNode=nextNode;} Node(T nodeValue){this(nodeValue, null);}}//下面是singleLinkedList 类的数据成员和方法private Node<T> head,tail;public singleLinkedList() {head=tail=null;}public boolean isEmpty() {return head==null;}//添加头结点public void addToHead(T iteam) {head=new Node<T>(iteam);if(tail==null)tail=head;}//添加尾指针public void addToTail(T item) {if(!isEmpty()){tail.nextNode=new Node<T>(item);tail=tail.nextNode;}else {head=tail=new Node<T>(item);}} private void printList() {if(isEmpty()){System.out.println("null");}else {for(Node<T> pNode=head;pNode!=null;pNode=pNode.nextNode){System.out.println(pNode.nodeValue);}}}//表头插入结点 private void addFirst(T item) {Node<T> newNode=new Node<T>(item);newNode.nextNode=head;head=newNode;} //表尾插入结点 private void addLast(T item) {Node<T> newNode=new Node<T>(item);tail.nextNode=newNode;tail=newNode;} //表头删除结点 private void removeFirst () {if(!isEmpty()){head=head.nextNode;}else {System.out.println("the list is null now");}} //表尾删除结点,效率低,全部遍历 public void removeLast() {Node<T> prevNode=null,currNode=head;while(currNode.nextNode!=null){prevNode=currNode;currNode=currNode.nextNode;if(currNode.nextNode==null)prevNode.nextNode=null;}} //遍历方便,可以hasnext函数 private boolean insert(T appointedItem,T item) {Node<T> prevNode=head,currNode=head.nextNode,newNode;newNode=new Node<T>(item);if(!isEmpty()){while ((currNode!=null)&&(!appointedItem.equals(currNode.nodeValue))) {prevNode=currNode;currNode=currNode.nextNode;}newNode.nextNode=currNode;prevNode.nextNode=newNode;return true;}return false;} //删除中间结点 private void remove(T item) {Node<T> currNode=head,prevNode=null;boolean found=false;while(currNode!=null&&!found){if(item.equals(currNode.nodeValue)){if(prevNode==null)removeFirst();else prevNode.nextNode=currNode.nextNode;found=true;}else {prevNode=currNode;currNode=currNode.nextNode;}}} public static void main(String[] args) {singleLinkedList<Integer> ls=new singleLinkedList<Integer>(); ls.addToHead(1); ls.addLast(2); ls.addLast(4); ls.insert(4, 3); ls.printList();}}
0 0
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构——单链表
- 数据结构—单链表瞎搞
- 数据结构—单链表
- 【数据结构】单链表—逆置单链表
- 数据结构—单链表
- 我的编程学习日志(13)--打开一个文件的方法(system(),ShellExecute())
- Java异常机制
- cocos2d-x应用窗口相关源码剖析5-其他细节
- iOS Code Signing: 解惑(译)
- 键盘KVC通知
- 数据结构—单链表
- C/C++中函数参数传递详解
- 输入n,打印1到n之间的每个数,考虑整数溢出
- Average Score39届亚洲赛牡丹江站A题
- 基本数据类型对象包装类 进制转换
- 宋德福宋德福
- HDU 4424 Conquer a New Region 最大生成树
- Angular.js笔记
- 安装 openSUSE 13.1 后必须做的10件事情