关于链表的一些总结和代码,java实现
来源:互联网 发布:海尔ife矩阵 编辑:程序博客网 时间:2024/05/01 04:00
本人对链表这一部分内容掌握的一直不太好,现在总结如下,代码全部在myeclipse下运行通过
1、链表的创建,插入和删除,查找
class Lnode
{
private int val;
private Lnode next;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public Lnode getNext() {
return next;
}
public void setNext(Lnode next) {
this.next = next;
}
}
public class LinkList {
public Lnode head=new Lnode();
public void creatLinkList(int[] arr)
{
Lnode tail=head;
for(int i=0;i<arr.length;i++)
{
Lnode newNode=new Lnode();
newNode.setVal(arr[i]);
newNode.setNext(null);
tail.setNext(newNode);
tail=newNode;
}
}
//打印链表中数据
public void printlink()
{
Lnode ptr;//实例化一个节点
ptr=head.getNext();//该节点取得头结点的后继节点
while(ptr!=null){
System.out.print(ptr.getVal()+"->");
ptr=ptr.getNext();
}
System.out.println();
}
//插入数据
public void insertlink(int pos,int value){//两个参数,一个表示插入的位置,另一个表示插入的值
int index=0;
Lnode ptr;
Lnode pnew;//实例化新节点
ptr=head.getNext();
while(ptr!=null){
index++;
if(pos==index){
pnew=new Lnode();
pnew.setVal(value);
pnew.setNext(ptr.getNext());
ptr.setNext(pnew);
System.out.println("插入数据"+value+"成功!");
break;
}
else{
ptr=ptr.getNext();
}
}
if(ptr==null)
System.out.println("插入数据失败!");
}
//删除结点
public void deletelink(int value){
Lnode ptr=head.getNext();
Lnode p=head;
while(ptr!=null)
{
if(ptr.getVal()==value)
{
p.setNext(ptr.getNext());
System.out.println("删除数据"+value+"成功!");
break;
}
else
{
p=ptr;
ptr=ptr.getNext();
}
}
if(ptr==null){
System.out.println("链表中没有要删除的数据!");
}
}
//查找结点
public void seachlink(int value){
Lnode ptr;
ptr=head.getNext();
while(ptr!=null){//在节点非空的情况下寻找匹配的的值
if(value==ptr.getVal()){//匹配成功是
System.out.println("找到数据:"+ptr.getVal());
break;//退出循环
}
else{//当当前值不是要查找的值时,查找下一个
ptr=ptr.getNext();
}
}
if(ptr==null)//链表遍历完毕,没有找到时
System.out.println("链表中没有要查找数据");
}
public static void main(String args[])
{
int a[]={1,4,5,6,7};
LinkList list=new LinkList();
list.creatLinkList(a);
System.out.println(" 链表输出如下:");
list.printlink();
list.insertlink(2,100);
list.printlink();
list.deletelink(100);
list.printlink();
list.seachlink(7);
list.seachlink(100);
}
}
- 关于链表的一些总结和代码,java实现
- 关于Java代码优化的一些总结
- 关于JAVA和C++的一些总结
- 关于近期项目代码实现的一些总结
- 关于php代码执行机制的一些思考和总结
- 关于链表操作编程实现的一些总结
- 关于C++和Java的一些差异的总结
- java我的总结——一些基础知识和代码
- java基础学习总结——关于Java中事件分发和监听机制实现的代码实例
- 今天看了ACE 中Proactor实现部分的一些代码,做一些总结和分析
- JAVA关于Date操作的一些代码
- 关于java中一些代码的理解
- 关于touch的一些方法和代码
- 关于java构造器的一些总结
- 关于java一些知识点的总结
- 关于java乱码的一些总结
- 关于java乱码的一些总结
- 关于java乱码的一些总结
- NAT(Network Address Translation,网络地址转换)
- 配置文件<lib>节点里没有libtest项;
- 通过hibernate API编写访问数据库的代码
- C#点击iframe页面的控件(button),弹出层,关闭弹出层时只刷新父页面中的iframe里面的页面
- javascript之,深扒typeof,instanceof操作符
- 关于链表的一些总结和代码,java实现
- mybatis中#{}与${}区别
- hdu 1061 Rightmost Digit
- 黑马程序员---OC学习笔记之block访问外部变量【重点面试】
- 深入理解Android之Gradle
- stm8 io口 spi模拟,可用于RC522
- UIStatusBar汇总_iOS9.0后修改状态栏颜色(UIStatusBar)
- IOS 启动画面设置
- R语言读取oracle数据库数据表