数据结构之链表
博客专区 > paluadan 的博客 > 博客详情
数据结构之链表
paluadan 发表于2年前
数据结构之链表
  • 发表于 2年前
  • 阅读 6
  • 收藏 0
  • 点赞 2
  • 评论 0
摘要: 开始整理自己对于数据结构基础知识
public Node findLastNode(Node head, int index) {
 
 if (node == null) {
 return null;
 }
 
 Node first = head;
 Node second = head;
 
 //让second结点往后挪index个位置
 for (int i = 0; i < index; i++) {
 second = second.next;
 }
 
 //让first和second结点整体向后移动,直到second结点为Null
while (second != null) {
 first = first.next;
 second = second.next;
 }
 
 //当second结点为空的时候,此时first指向的结点就是我们要找的结点
return first;
}

本文包含链表的以下内容:

  1、单链表的创建和遍历

  2、求单链表中节点的个数

  3、查找单链表中的倒数第k个结点(剑指offer,题15)

  4、查找单链表中的中间结点

  5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17)

  6、单链表的反转【出现频率最高】(剑指offer,题16)

  7、从尾到头打印单链表(剑指offer,题5)

  8、判断单链表是否有环

        9、取出有环链表中,环的长度

  10、单链表中,取出环的起始点(剑指offer,题56)。本题需利用上面的第8题和第9题。

  11、判断两个单链表相交的第一个交点(剑指offer,题37)

public class LinkList {

public Node head;

public Node current;

 

//方法:向链表中添加数据

public void add(int data) {

 //判断链表为空的时候

 if (head == null) {//如果头结点为空,说明这个链表还没有创建,那就把新的结点赋给头结点

 head = new Node(data);

 current = head;

 } else {

 //创建新的结点,放在当前节点的后面(把新的结点合链表进行关联)

 current.next = new Node(data);

 //把链表的当前索引向后移动一位

 current = current.next; //此步操作完成之后,current结点指向新添加的那个结点

 }

}

 

//方法:遍历链表(打印输出链表。方法的参数表示从节点node开始进行遍历

public void print(Node node) {

 if (node == null) {

 return;

 }

 

current = node;

 while (current != null) {

 System.out.println(current.data);

 current = current.next;

 }

}

 

class Node {

//注:此处的两个成员变量权限不能为private,因为private的权限是仅对本类访问。

 int data; //数据域

 Node next;//指针域

 

 public Node(int data) {

 this.data = data;

}

}

 

 

public static void main(String[] args) {

LinkList list = new LinkList();

//向LinkList中添加数据

 for (int i = 0; i < 10; i++) {

 list.add(i);

 }

 

 list.print(list.head);// 从head节点开始遍历输出

}

 

}

共有 人打赏支持
粉丝 0
博文 1
码字总数 0
评论 (0)
×
paluadan
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: