简单模拟LinkedList

底层结构为链表;

import java.util.Iterator;
//LinkedLink其实是双向链表
public class MyLinkedList<E> implements Iterable<E>{
	int size;
	private Node head=null;//头部节点
	private Node tail=null;//尾部节点
	public void add(E e){
		Node node=new Node(e,null);
		if(head==null){
			head=node;
			tail=node;
		}else{
			tail.setNext(node);
			tail=node;
		}
		size++;
	}
	public int getSize(){
		return size;
	}
	public Iterator<E> iterator() {
		return new Iterator<E>(){
			Node temp=head;
			public boolean hasNext() {
				return temp!=null;
			}

			public E next() {
				E data=temp.data;
				temp=temp.next;
				return data;
			}

			public void remove() {
				
			}};
	}
	class Node{//内部类,节点
		private E data;
		private Node next;
		public Node(E data, Node next) {
			super();
			this.data = data;
			this.next = next;
		}
		public E getData() {
			return data;
		}
		public void setData(E data) {
			this.data = data;
		}
		public Node getNext() {
			return next;
		}
		public void setNext(Node next) {
			this.next = next;
		}
	}
}

public class Test2 {
public static void main(String[] args) {
	MyLinkedList<String> mylink=new MyLinkedList<String>();
	mylink.add("a");
	mylink.add("v");
	mylink.add("vw");
	System.out.println("元素个数:"+mylink.getSize());
	for(String data:mylink){
		System.out.println(data);
	}
}
/**
 	元素个数:3
	a
	v
	vw
 */
}


为了模拟一个简单的浏览器前进后退功能,我们可以使用链表(LinkedList)来存储浏览过的页面。每个节点代表一个网页,包含URL、标题等信息。通常我们会有两个链表,一个用于记录当前访问的历史记录(forward_list),另一个用于记录用户可能需要返回的先前页面(back_list)。下面是基本的代码示例: ```python class WebPage: def __init__(self, url, title): self.url = url self.title = title self.next = None class BrowserHistory: def __init__(self): self.forward_list = LinkedList() self.back_list = LinkedList() def visit(self, url, title): new_page = WebPage(url, title) # 添加到当前浏览历史 self.forward_list.append(new_page) # 如果有后退链表,则将当前页添加到最后一个后退页面之前 if self.back_list.is_empty(): self.back_list.append(new_page) else: last_back_page = self.back_list.last_node last_back_page.next = new_page self.back_list.append(last_back_page) def back(self): if not self.back_list.is_empty(): last_back_page = self.back_list.pop() # 将后退的页面添加到当前历史的头部 self.forward_list.prepend(last_back_page) def forward(self): if not self.forward_list.is_empty(): self.visit(self.forward_list.peek().url, self.forward_list.peek().title) # 跳转到下一个页面 class LinkedList: # 省略链表的创建和基本操作,如append, prepend, is_empty, peek等 ``` 在这个例子中,`visit`方法用于添加新的网页到历史记录,`back`用于从后退链表移除并回到上一页面,`forward`则表示向前导航,如果还有未访问的页面则进行切换。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值