09年考研数据结构42题 java实现

 

public class Link{
	private LinkNode headLink= new LinkNode("");
	public void add(String object){
		LinkNode link1 = new LinkNode("link1");
		LinkNode newNode = new LinkNode(object);
		newNode.link = null;
		if(headLink.link==null){
			headLink.link = newNode;
		}
		else{
			link1.link = headLink.link;
			while(link1.link.link!=null){
				link1.link = link1.link.link;
			}
			link1.link.link = newNode;
		}
	}
	public String getKNodeBeforeLast(int k){
		LinkNode linkk = new LinkNode("linkk");
		LinkNode linkk2 = new LinkNode("linkk");
		linkk.link = headLink.link;//指在第一个节点位置
		linkk2.link = headLink.link;//指在第一个节点位置
				
		int i = 1;//记录先行“指针”的位置
		while(linkk2.link.link!=null) {
				linkk2.link = linkk2.link.link;
				i++;
				if(i>k){//需要注意的地方 
					linkk.link = linkk.link.link;
				}
				
		}
		if(i>=k){
			System.out.println("倒数第"+k+"元素的值是:"+linkk.link.data);
			return "1";
		}
		else{
			System.out.println("少于"+k+"个元素");
			return "0";
		}
	}
}
class LinkNode{
	LinkNode link;
	String data;
	LinkNode(String data){
		this.data = data;
		link = null;
	}
}

 

public class LinkTest {
	public static void main(String[] args) {
		Link link = new Link();
		for (int i = 1; i <= 12; i++) {
			link.add("string"+String.valueOf(i));
		}
		System.out.println(link.getKNodeBeforeLast(1));
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java硕哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值