线性表_链式存储1

线性表的链式存储实现

线性表链式存储特点:不要求逻辑上相邻的两个元素物理上也相邻;通过“链”建立起来数据元素之间的逻辑关系。

  • 插入、删除等操作不需要移动数据元素 ,只需要修改“链”。

线性表的链式存储实现:

线性表:

//工具指针是用来指向操作的节点或者帮助完成操作。
public class Link_1 {
 	int length;//记录长度
 	Node head;
 	
 	public Link_1(Node n) {
  		this.length=1;
  		this.head=n;
 	}//构造函数,建立一个表
 
 	public boolean decide(int n){
  		return (n>0)&&(n<=this.length+1);
 	}//判断操作的位置是否过界
 
 
 
 	public void Insert(int n,int data) {
  		if(!this.decide(n)) {
   			System.out.println("超出边界I");
  			return ;
  		}//判断是否过界
 		Node node=new Node(data);
  		Node linshi=new Node(0);
  		Node flag_2=this.head;
 		Node flag_1 = null;
 	 //创建指针,作为工具
  		if(n==1) {
   			linshi=node;
   			node=this.head;
   			this.head=linshi;
   			this.head.next=node;
  		}//如果操作位置为第一个节点
  		else {
   			for(int i=1;i<n;i++) {
    				flag_1=flag_2;
    				flag_2=flag_2.next;
   				}
   			flag_1.next=node;
   			node.next=flag_2;
  		}//操作位置不是第一个节点
  		this.length++;//记录长度加1
 	}//插入操作
 
 
 
 	public void delete(int n) {
  		if(!this.decide(n)) {
   			System.out.println("超出边界d");
   			return ;
  		}//判断是否越界
  		Node linshi=new Node(0);
  		Node flag_2=this.head;
  		Node flag_1=null;
  		//建立工具指针
  		if(n==1) {
   			this.head=this.head.next;
  		}//如果操作位置是1
  		else {
   			for(int i=1;i<n;i++) {
   		 	flag_1=flag_2;
    			flag_2=flag_2.next;
   			}
   		flag_1.next=flag_2;
  		}//操作位置不是1
  		this.length--;//删除操作结束后,记录的长度减1
 	}//删除操作
 
 
 	public void Print() {
  		Node flag=this.head;
  		while(!(flag.next==null)) {
   			System.out.println("打印结果:"+flag.data);
   			flag=flag.next;
  		}//打印操作
 	}
 }
节点:
public class Node {
 	int data;
 	Node next;
 	public Node(int Data) {
  		this.data=Data;
  		this.next=null;
 	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值