线性链表的操作

 package dataStruct.test;

public class Line {
    //最大的长度
    public static final int M = 100;

    private String[] strs = new String[M];

    //当前最后一位的索引
    private int strSize = 0;
    
    
    public Line(){
        
    }
    /**
     * 线性表的插入
     * @param index  插入的索引号
     * @param value  插入的值
     * @return  返回值,是否能插入
     */
    public boolean insertLine(int index,String value) {
        if(index < 0 || index > strSize || strSize == M) {
            return false;
        }
        int i =  strSize;
        for(;i > index;i--) {
            strs[i] = strs[i - 1];
        }
        strs[i] = value;
        strSize ++;
        return true;
        
    }
    
    /**
     * 如果没有指定索引值,则默认插入在最后
     * @param value
     * @return
     */
    public boolean insertLine(String value){
        return insertLine(strSize,value);
    }
    
    
    /**
     * 按索引值删除
     * @param index
     * @return
     */
    public boolean deleteLine(int index){
        if(index < 0||index >= strSize) {
            return false;
        }

        for(int i = index;i < strSize - 1;i ++) {
            strs[i] = strs[i+1];
        }
        strSize--;
        return true;
        
    }
    
    /**
     * 不加索引值默认删除最后一个
     * @return
     */
    public boolean deleteLine(){
        if(strSize == 0) {
            return false;
        }
        strSize--;
        return true;
    }
    
    
    public int getStrSize(){
        return strSize;
    }
    
    /**
     * 打印的方法
     */
    public void print(){
        System.out.print("[");
        for(int i = 0; i < strSize -1;i++) {
            System.out.print(strs[i] + ",");
        }
        System.out.print(strs[strSize-1]);
        System.out.println("]");
    }
    
    
    
    public static void main(String[] args) {
        Line test = new Line();
        //为其赋值
        for (int i = 0; i < 10 ; i++) {
            test.insertLine(String.valueOf(i));
        }
        test.print();
        System.out.println("strSize = "+test.getStrSize());
        test.deleteLine(2);
        test.print();
        test.deleteLine();
        test.print();
        
    }

}

 

//节点

package dataStruct.test;

/**
 * 节点,链式存储结构
 * @author spirit
 *
 */
public class NodeOne {
    private String value;
    private NodeOne next;
   
    public NodeOne(){
       
    }
   
    public NodeOne(String value,NodeOne node){
        this.value = value;
        this.next = node;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public NodeOne getNext() {
        return next;
    }

    public void setNext(NodeOne next) {
        this.next = next;
    }
   
   
   
   

}

package dataStruct.test;

/**
 * 线性链表
 * @author spirit
 *
 */
public class LinkList {
   
    //头节点,尾节点,长度
    private NodeOne header;
    private NodeOne ender;
    private int size = 0;
   
    /**
     * 构造函数完成初始化过程
     */
    public LinkList(){
        header = new NodeOne();
        ender = header;
        header.setNext(ender);
        size = 0;
    }
    public int getSize(){
        return size;
    }
   
    /**
     * 线性链表的插入
     * @param index 索引值
     * @param value 插入的值
     * @return 插入与否
     */
    public boolean insertValue(int index,String value){
        if(index < 0 || index > size) {
            return false;
        }
        if(index == size){
            NodeOne temp = new NodeOne(value,ender.getNext());
            ender.setNext(temp);
            ender = temp;
            size ++;
            return true;
        }
        NodeOne p = header;
       
        for(int i = 0; i < index;i++) {
            p = p.getNext();
        }
       
        NodeOne n = new NodeOne(value,p.getNext());
        p.setNext(n);
        size ++;
       
        return true;
    }
   
    /**
     * 插入至最后
     * @param value
     * @return
     */
    public boolean insertValue(String value){
        return insertValue(size,value);
    }
   
   
    /**
     * 按索引值来删除
     */
    public void deleteValue(int index){
        if(index < 0||index > size) {
            return;
        }
        NodeOne p = header;
        for(int i = 0; i < index;i++) {
            p = p.getNext();
        }
        NodeOne n = p.getNext();
        p.setNext(n.getNext());
        n.setNext(null);
        if(index == size--) {
            ender = p;
        }
       
    }
    /**
     * 默认只删除第一个
     */
    public void deleteValue(){
        deleteValue(0);
    }
   
   
    //打印
    public void print(){
        NodeOne p = header.getNext();
        for(int i = 0; i < size;i++) {
            System.out.print(p.getValue()+" ");
            p = p.getNext();
        }
        System.out.println();
    }
   
   
   
   
    public static void main(String[] args) {
        LinkList link = new LinkList();
        for(int i = 0; i < 10; i ++) {
            link.insertValue(String.valueOf(i));
        }
//        link.insertValue("hello");
        System.out.println("header.getValue:"+link.header.getValue());
        System.out.println("ender.getValue:"+link.ender.getValue());
       
        System.out.println(link.getSize());
        link.print();
        link.deleteValue(2);
        link.print();
       
    }
   
}

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值