数据结构-链表
class ListNode{ int value; ListNode nextNode; }
class ListNode { int value; ListNode nextNode; ListNode(int x) { value = x; } } public class linkedList{ public static void addToTail(ListNode pHead,int value){ ListNode pNew=new ListNode(value); pNew.nextNode=null; if (pHead == null) { pHead=pNew; } else{ ListNode pNode=pHead; while(pNode.nextNode!=null){ pNode=pNode.nextNode; } pNode.nextNode=pNew; } } }
public static void removeNode(ListNode pHead ,int value){ //如果头节点是空的 if(pHead==null||pHead==null){ return; } //初始化删除节点 ListNode pToBeDeleted=null; //遍历链表如果链表头节点值确定 if(pHead.value==value){ //删除节点变为当前节点 pToBeDeleted=pHead; //头节点下移 pHead=pHead.nextNode; } //如果链表节点值不与目标值相同 else{ ListNode pNode=pHead; //当头节点不为空 while(pNode.nextNode!=null&&pNode.nextNode.value!=value){ //移动到下一节点 pNode=pNode.nextNode; } //如果下一节点值与目标值相同 if(pNode.nextNode!=null&&pNode.nextNode.value==value){ pToBeDeleted=pNode.nextNode; //把目标节点断开,上一节点指向目标节点的下一节点 pNode.nextNode=pNode.nextNode.nextNode; } } //消除目标节点 if(pToBeDeleted!=null){ pToBeDeleted=null; } }
public class printReversedList { public static void printReversedList(ListNode pHead){ Stack<ListNode> nodes = new Stack<>(); ListNode pNode=pHead; //遍历链表把链表中的值全部顺序放入栈中 while(pNode!=null){ nodes.push(pNode); pNode=pNode.nextNode; } //当栈中有值顺序弹出 while(!nodes.empty()){ pNode=nodes.peek(); System.out.print(pNode.value+" "); nodes.pop(); } } public static void main(String[] args){ ListNode officers = new ListNode(1); ListNode pHead=officers; for(int i=2;i<=5;i++){ officers.nextNode = new ListNode(i); officers=officers.nextNode; } printReversedList(pHead); } }