数据结构复习(重写某些重要数据结构API) ————链表
数据:
package 链表;
class DATA {
/**
* @param args
*/
String key;
String name;
}
-------------------
实现:
``package 链表;
abstract class Linked {
Node addNodeofEND(Node head,DATA addData){//在末尾添加一个节点 返回为head
Node node=new Node();//用来保存输入数据
Node temp;//临时节点 用来遍历
node.nodeData = addData;
node.nextNode = null;
if(head == null){//head 即为null
head = node;
return head;
}
else{
temp = head;
while(temp.nextNode!=null){
temp = temp.nextNode;
}
temp.nextNode = node;
return head;
}
}
Node addNodeofBINGIN(Node head,DATA addData){//在开始到地方添加一个节点
Node node=new Node();//用来保存输入数据
node.nodeData = addData;
node.nextNode = head;
head = node;
return head;
}
Node findNode(Node head,String key){//根据key来查找节点
Node temp = new Node();//临时节点用来遍历链表
temp = head;
while(temp.nextNode!=null){
if(temp.nodeData.key.compareTo(key)==0){//找到key一样的话就返回
return temp;
}
temp=temp.nextNode;
}
return null;
}
Node insertNode(Node head,DATA insertData,String key){//在key之后插入新的节点
Node node =new Node();
Node temp;
node.nodeData = insertData;
temp = findNode(head,key);//保存key所在节点
if(temp != null){
node.nextNode = temp.nextNode;
temp.nextNode = node;
}
else{
System.out.println("没找到这个插入位置,插入失败!");
}
return head;
}
Node DeleteNode(Node head,String key){//根据key来删除节点
Node node,temp;
temp = head;
node= head;
while(temp!=null){
if(temp.nodeData.key.compareTo(key)==0){
node.nextNode = temp.nextNode;
temp =null;
return head;
}
else {
node = temp;
temp=temp.nextNode;
}
}
System.out.println("没找到这个插入位置,删除失败!");
return head;
}
}
`