概述
链表结构是由一个或一个以上再内存上不连续存储的元素结点连接而成的数据结构,链表的每个结点都有两个部分,一个部分是存储的数据,另一部分是指向下一结点的指针,既是下一节点的引用。
首先链表一定有一个头结点,它是链表的第一个结点,他是链表的第一个结点,该结点的引用部分指向下一节点,下一结点引用部分指向下下一结点 。。。。直到最后一个结点,最后一个结点引用部分为空,标志着链表的结束,整个存储形式呈一个长链状
链表的基础操作分为 追加结点 遍历结点 删除结点 插入结点等
首先是链表结点类
public class LinearList {
//链表数据部分
int i;
//链表指针,既是链表对下一节点的引用
LinearList nextNode;
}
追加结点
/**
* 链表末尾追加节点
* @param head (头节点)
* @param i (追加节点的值)
* @return
*/
static int add(LinearList head,int i){
//判断头节点有没有初始化
if(head == null){
return 0;
}
//保存头节点引用
LinearList temp = head;
//实例化追加节点,保存最佳节点数据
LinearList addNode = new LinearList();
addNode.i = i;
addNode.nextNode = null;
/**
* 循环至链表最后一个节点
*/
while(temp.nextNode!=null){
temp = temp.nextNode;
}
//链表最后一个节点的指针指向追加的节点
temp.nextNode = addNode;
return 1;
}
遍历结点
/**
* 遍历链表的所有结点
* @param head
*/
static void printNode(LinearList head){
if (head == null){
return;
}
while(head != null){
System.out.println("正在遍历:"+head.i);
//该结点操作完成,指针下移到下一节点
head = head.nextNode;
}
}
删除结点
/**
* 删除指定节点
* 首先循环移动指针查找到要删除的结点
* 再通过指针互换使要删除节点移出链表
* 返回值为头节点
* 删除头节点则返回新的头节点
*
*
* @param head
* @param delKey
* @return head
*/
static LinearList delete(LinearList head,int delKey){
LinearList node = null;
LinearList temp = null;
/**
* 如果要删除的是头节点
* 则返回删除后新的头节点
*
*/
if(head.i == delKey){
temp = head.nextNode;
head.nextNode = null;
return temp;
}
temp = head.nextNode;
while (temp != null){
if(temp.nextNode.i == delKey){
node = temp.nextNode.nextNode;
temp.nextNode = node;
return head;
}else{
temp = temp.nextNode;
}
}
return null;
}
插入结点
/**
* 在链表指定位置插入节点
* insertKey 插入节点的数据
* upperNodeKey 引用插入节点的元素的数据
*
* 通过find 方法返回链表中的插入位置的上一节点
* 改变插入节点的指针指向插入节点
* 插入节点的指针指向插入位置的下一节点
*
* @param head
* @param inserKey
* @param upperNodeKey
* @return
*/
static int insert(LinearList head,int inserKey,int upperNodeKey ){
//判断头节点有没有初始化
if(head == null){
return 0;
}
//保存查找节点的结果
LinearList temp = find(head,upperNodeKey);
//保存temp 对下一节点的引用
LinearList temp1 = null;
//即将插入的新节点
LinearList insertNode = new LinearList();
insertNode.i = inserKey;
if (temp == null){
return 0;
}else{
//指针互换
temp1 = temp.nextNode;
temp.nextNode = insertNode;
insertNode.nextNode = temp1;
return 1;
}
}
最后
以上就是虚心豆芽为你收集整理的java链表需要自己编写么_基于java的链表基础操作的全部内容,希望文章能够帮你解决java链表需要自己编写么_基于java的链表基础操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复