单向链表

1.准备数据

class Data// 数据元素类
{
	// ...
}

class Node// 链表节点类
{
	Data data = new Data();
	Node next;
}


2.插入尾节点

Node addEnd(Node head, Data data) {
	Node node, temp;
	if ((node = new Node()) == null) {
		System.out.println("申请内存失败!");
		return null;
	}
	node.data = data;
	node.next = null;
	if (head == null) {
		head = node;
		return head;
	}
	temp = head;
	while (temp.next != null) {
		temp = temp.next;
	}
	temp.next = node;
	return head;
}


3.插入头结点

Node addFirst(Node head, Data data) {
	Node node;
	if ((node = new Node()) == null) {
		System.out.println("申请内存失败!");
		return null;
	}
	node.data = data;
	node.next = head;
	head = node;
	return head;
}


4.查找节点

Node findNode(Node head, Data data) {
	Node temp;
	temp = head;
	while (temp != null) {
		if (temp.data.compareTo(data)) {
			return temp;
		}
		temp = temp.next;
	}
	return null;
}


5.插入节点

Node insertNode(Node head, Data findData, Data data) {
	Node node, temp;
	if ((node = new Node()) == null) {
		System.out.println("申请内存失败!");
		return null;
	}
	node.data = data;
	temp = head;
	while (temp != null) {
		if (temp.data.compareTo(findData)) {
			break;
		}
		temp = temp.next;
	}
	if (temp != null) {
		node.next = temp.next;
		temp.next = node;
	} else {
		System.out.println("未找到正确的插入位置!");
	}
	return head;
}


6.删除节点

Node deleteNode(Node head, Data data) {
	if (head == null) {
		return null;
	}
	if (head.data.compareTo(data)) {
		head = head.next;
		return head;
	}
	Node node, temp;
	node = head;
	temp = head.next;
	while (temp != null) {
		if (temp.data.compareTo(data)) {
			node.next = temp.next;
			temp = null;
		} else {
			node = temp;
			temp = temp.next;
		}
	}
	return head;
}


7.计算链表长度

int listLength(Node head) {
	Node temp;
	int len = 0;
	temp = head;
	while (temp != null) {
		len++;
		temp = temp.next;
	}
	return len;
}


8.显示所有节点

void printAllNode(Node head){  
	Node temp;  
	Data data;  
	temp=head;  
	while (temp!=null) {  
		data=temp.data;  
		System.out.println(...);  
		temp=temp.next;  
	}  
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值