单链表 - 数据结构复习笔记

数据结构复习笔记-单链表

什么是单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。

构成
链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

特点

  • 链表是以节点的方式来储存数据的
  • 每个节点包括data域,next指向下一个节点
  • 在内存中各节点不一定连续存储
  • 分为带头节点和不带头节点的链表

JAVA代码实现

对于一个单链表的节点,首先要有表示自己的节点属性,如value,name等,由于单链表的每个节点是指向自己的下一个节点,不可缺少的就是一个指向下一个节点的指针,所以对于一个单链表来说:

class ListNode{
	
	public int val; // 自己的属性1
	public String name;//自己的属性2
	public ListNode next;//指向下一个节点
	
	public ListNode(int val, String name) {
		this.val = val;
		this.name = name;
	}
}

对于一个数据结构来说,增删改查操作和遍历方法是不可缺少的,单链表的操作主要是通过指针来完成,我们只需要链表的头节点,就可以对链表内所有的节点进行操作。

添加节点

单链表的添加操作:
1.用一个指针指向头节点
2.遍历到最后一个节点
3.将最后一个节点的next值指向这个新节点

代码:

	public void add(ListNode node) {
		//如果头节点为空,即当前链表无节点
		if(head == null) {
			head = node;
		}else {
			//找到当前链表的最后一个节点
			ListNode temp = head;
			while(temp.next != null) {
				temp = temp.next;
			}
			temp.next = node;
		}
	}

删除节点

单链表的删除操作:
1.用一个指针指向头节点
2.遍历到最后一个节点
3.遍历中需要找到想要删除的节点的上一个节点,将它的next设置成想要删除的节点的后面一个节点

代码:

	public void delete(int num) {
		if(num < 1)throw new RuntimeException("非法输入");
		//此方法删除的是单链表中的第num个的元素
		ListNode temp = head;
		if(num == 1) {
			head = head.next; return;
		}
		while(temp.next != null) {
			if(num - 1 == 1) {
				if(temp.next!=null) {
					temp.next = temp.next.next;
				}
				else temp.next = null;
				return;
			}
			num--;
			temp = temp.next;
		}
		System.out.print("Node not exist");
	}

输出单链表的大小(节点个数)

1.用一个指针指向头节点
2.遍历到最后一个节点
3.每遍历一个节点,数字加1

代码:

	public int size() {
		ListNode temp = head;
		int count = 0;
		if(temp == null) {
			return 0;
		}
		while(temp != null) {
			temp = temp.next;
			count++;
		}
		return count;
	}
}

你可能感兴趣的:(数据结构学习笔记,链表,数据结构,指针,单链表,java)