【java链表 】java 头插法建单链表

好久前练习用的,现在看难度不大。

package project;
class Node
{
    private int id;   //私有就是只能本类对象及方法访问。
   private String name;
   public Node next; //指向下一个类节点

   public Node(int id,String name)//有参构造方法
   {
      this.id=id;
      this.name=name;
   }

   public void displayLink() //显示节点内容
   {
      System.out.println("id:"+id+" "+"name:"+name);
   }
}

class LinkList
{
   private Node first;
   public LinkList()
   {
      first=null;
   }

   public boolean isEmpty()//判断节点是否为空
   {
      if(first==null)
         return true;
      else
         return false;
   }

   public void insert(int id,String name)
   {
      Node newnode=new Node(id,name);
      newnode.next=first;//头插法插入节点
      first=newnode;
   }
   public void displayList() //遍历链表
   {
      Node current=null;
      current=first;
      while(current!=null)
      {
         current.displayLink();
         current=current.next;
      }
   }
}

public class test11
{
   public static void main(String[] args)
   {
      LinkList linklist=new LinkList();
      linklist.insert(1, "张三");
      linklist.insert(2, "李四");
      linklist.insert(3, "王五");
      linklist.displayList();
   }
}

结果:

id:3 name:王五
id:2 name:李四
id:1 name:张三

时间: 2024-10-10 20:48:19

【java链表 】java 头插法建单链表的相关文章

Java 实现简答的单链表的功能

作者:林子木  博客网址:http://blog.csdn.net/wolinxuebin 参考网址:http://blog.csdn.net/sunsaigang/article/details/5751780 描述:使用java实现简答的单链表的功能 定义了一个MyList类 包含的函数: getHead()返回头指针: isEmpty() 判断是否为空: addFirst(T element)在链表的头部加入元素: addLast(T element)在链表的尾部加入元: add(T fi

Python与数据结构[0] -> 链表[0] -> 单链表与带表头单链表的 Python 实现

单链表 / Linked List 目录 单链表 带表头单链表 链表是一种基本的线性数据结构,在C语言中,这种数据结构通过指针实现,由于存储空间不要求连续性,因此插入和删除操作将变得十分快速.下面将利用Python来完成单链表的实现. 1 单链表 不带表头的单链表通常形式如下, node_1 -> node_2 -> node_3 -> node_4 完整代码 1 class Node: 2 def __init__(self, val=None, nxt=None): 3 self.v

Java数据结构-线性表之单链表LinkedList

线性表的链式存储结构,也称之为链式表,链表:链表的存储单元可以连续也可以不连续. 链表中的节点包含数据域和指针域,数据域为存储数据元素信息的域,指针域为存储直接后继位置(一般称为指针)的域. 注意一个头结点和头指针的区别: 头指针: 指向链表的第一个节点的指针,若链表有头结点,则是指向头结点的指针: 头指针具有标识作用,所以常用头指针作为链表的名字: 不论链表是否为空,头指针都不为空: 是链表的必要元素. 头结点: 头结点是为了操作的统一和方便而设立的,放在第一个元素节点的前面,其数据域一般无意

链表学习一:单链表创建-头插入与尾插入

链表的创建过程是一个动态的生成过程,创建链表有两种思路,一种是从表头插入,另一种是从表尾插入. 表头插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束标志为止. 表尾插入思路:从一个空表开始,重复读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表尾上,直到读入结束标志为止. 两种方法C++实现如下: 1 #include<iostream> 2 using namespace

链表(主要是单链表)

单链表:只指出后继关系的链表 双链表:同时存储前趋和后继 循环链表:指出后继的同时指出头结点和尾结点的关系 单链表的存储 定义一个结点类型 struct  linkRec { datatype  data; linkRec  *next; } 单链表操作-插入 在结点p后插入一个结点 *申请空间 *输入数据放入申请到的空间 *链入p后 tmp = new linkRec;  // 创建一个新结点 tmp->data = x;        // 把x放入新结点的数据成员中 tmp->next

单链表 --- 合并两个单链表

合并单链表 --> 一.解决方法: 确保两个单链表不为空,且二者皆有序(若无序,则先进行排序) 创建新的单链表,并比较原本两个单链表数据大小,较小者置于新单链表中 逐步将两个单链表的数据置于新单链表中,直至二者为空 二.程序代码: ListNode* MergeList(ListNode *L1,ListNode *L2)//合并两个单链表 { ListNode *newHead=NULL; ListNode *tail=NULL; if(L1==NULL) { return L2; } if(

【算法设计-单链表的逆转】单链表逆转实现

1.在Θ(n)时间内将链表转置,而且只能需要少量的额外空间 这里需要用3个指针使得q指向p然后依次后移. 代码: #include<iostream> using namespace std; typedef struct Node { int data; struct Node *next; }LinkList; LinkList* Create_End(); void printLinkList(LinkList *L); LinkList* Create_End() { LinkList

leetcode链表--5、linked-list-cycle(单链表是否有环)

题目描述 Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using extra space? 解题思路:使用快慢指针,若在遍历过程中slow==fast则有环,否则无环 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *nex

链表 | 去除递增有序单链表中的重复元素

王道P37T12 主代码: void delete_common(LinkList& L){ LNode* pre=L,*p=L->next; while(p!=NULL){ LNode* r=p->next; while(r!=NULL && p->data==r->data){ pre->next=r; LNode* del=p; p=r; delete del; r=r->next; } pre=p; p=p->next; } } 完