Java实现链表结构

举报
一条coding 发表于 2021/10/19 23:28:53 2021/10/19
【摘要】 尾插法单项链表及遍历:import java.util.Random;public class mylinked { public static void main(String[] args) { mylinked mylinked=new mylinked(); mylinked.print(mylin...

  
  1. 尾插法单项链表及遍历:
  2. import java.util.Random;
  3. public class mylinked {
  4. public static void main(String[] args) {
  5. mylinked mylinked=new mylinked();
  6. mylinked.print(mylinked.creat(6));
  7. }
  8. // 分别存储下一个节点地址和数据
  9. public mylinked next;
  10. public int data;
  11. public mylinked header,tailer,newcode;
  12. public mylinked creat (int len) {
  13. Random random=new Random();
  14. // 定义头尾和新节点,且初值为空
  15. mylinked header,tailer,newcode;
  16. header=tailer=newcode=null;
  17. for (int i = 0; i <len; i++) {
  18. // 初始化新节点
  19. newcode=new mylinked();
  20. // 赋值
  21. newcode.data=random.nextInt(100);
  22. if(header==null){
  23. header=tailer=newcode;
  24. }else{
  25. tailer.next=newcode;
  26. tailer=newcode;
  27. }
  28. }
  29. return header;
  30. }
  31. public void print(mylinked header){
  32. while(header!=null){
  33. System.out.println(header.data);
  34. header=header.next;
  35. }
  36. }
  37. }

 头插法单向链表结构:

import java.util.Random;
public class mylink {

    //创建链表类
    class MLink {
        //当Mlink实例化后形成一个链表的节点对象
        //节点对象中的属性
        //节点存储的属性
        private int data;
        //存储下一个链表节点地址的属性
        private MLink next;
        /**
         * 功能:创建一个链表,并返回头节点的地址
         *
         * @param len 创建链表数据的长度
         * @return 返回头节点的地址
         */
        public MLink create(int len) {
            MLink header = null;
            //创建随机对象
            Random ra = new Random();
            //生成指定长度的随机数
            for (int i = 0; i < len; i++) {
                //创建随机数
                int num = ra.nextInt(100);
                //创建一个节点对象
                MLink temp = new MLink();
                //存储数据
                temp.data = num;
                //是否第一次创建链表节点
                if (header == null)
                    header = temp;
                else {
                    temp.next = header;
                    header = temp;
                }
            }
            return header;
        }
    }
}

双向链表及遍历:


  
  1. public class mylinked {
  2. public static void main(String[] args) {
  3. mylinked mylinked=new mylinked();
  4. mylinked.print(mylinked.creat(6));
  5. }
  6. // 分别存储下一个节点地址和数据
  7. public mylinked next;
  8. private mylinked last;
  9. public int data;
  10. public mylinked header,tailer,newcode;
  11. public mylinked creat (int len) {
  12. Random random=new Random();
  13. // 定义头尾和新节点,且初值为空
  14. mylinked header,tailer,newcode;
  15. header=tailer=newcode=null;
  16. for (int i = 0; i <len; i++) {
  17. // 初始化新节点
  18. newcode=new mylinked();
  19. // 赋值
  20. newcode.data=random.nextInt(100);
  21. if(header==null){
  22. header=tailer=newcode;
  23. }else{
  24. // 新节点的上一个等于尾节点,尾节点的下一个值等于新节点
  25. newcode.last=tailer;
  26. tailer.next=newcode;
  27. tailer=newcode;
  28. }
  29. }
  30. return header;
  31. }
  32. public void print(mylinked header){
  33. while(header!=null){
  34. System.out.println(header.data);
  35. header=header.next;
  36. }
  37. }
  38. }

 

文章来源: blog.csdn.net,作者:一条coding,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/skylibiao/article/details/81190377

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。