算法导论-List链表-java实现

本文介绍了一个使用双向链表实现的基本列表数据结构。通过具体的Java代码示例展示了如何进行节点插入、删除及搜索等核心操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package datastructure;

public class List {
 public static void main(String args[]){
  List list=new List();
  ListItem item=new ListItem(null,3,null);
  list.insert(new ListItem(null,1,null));
  list.insert(new ListItem(null,2,null));
  list.insert(item);
  list.insert(new ListItem(null,4,null));
  list.insert(new ListItem(null,5,null));
  list.listDelete(item);
  list.insert(new ListItem(null,6,null));
  list.insert(new ListItem(null,7,null));
  list.insert(new ListItem(null,8,null));
  list.insert(new ListItem(null,9,null));
  System.out.println(list.search(3).key);
  System.out.println(list.search(7).key);
 }
 private ListItem sentinel;
 public List(){
  sentinel=new ListItem(null,-1,null);
  sentinel.prev=sentinel;
  sentinel.next=sentinel;
 }
 public void listDelete(ListItem x){
  x.prev.next=x.next;
  x.next.prev=x.prev;
 }
 public ListItem search(int k){
  ListItem x=sentinel.next;
  while(x!=sentinel && x.key!=k){
   x=x.next;
  }
  return x;
 }
 public void insert(ListItem x){
  x.next=sentinel.next;
  sentinel.next.prev=x;
  sentinel.next=x;
  x.prev=sentinel;
 }
}
class ListItem{
 public ListItem prev;
 public int key;
 public ListItem next;
 public ListItem(ListItem prev,int key,ListItem next){
  this.prev=prev;
  this.key=key;
  this.next=next;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值