java--单键表

原创 2004年09月14日 16:29:00
http://blog.csdn.net/p96114/archive/2004/09/10/100617.aspx
/*
 * Created on 2004-9-10
 *
 * 单链表中的结点类型声明.
 */
package org.arliang;
/**
 * @author 李梁
 *
 * 单链表中的结点.
 */
public class node
{
    private int data; //存放数据
    private node link; //链接的下一个接点.
    public static void main(String[]args)
    {
    }
    /**
     * @return Returns the data.
     */
    public int getData()
    {
        return data;
    }
    /**
     * @param data
     *            The data to set.
     */
    public void setData(int data)
    {
        this.data = data;
    }
    /**
     * @return Returns the link.
     */
    public node getLink()
    {
        return link;
    }
    /**
     * @param link
     *            The link to set.
     */
    public void setLink(node link)
    {
        this.link = link;
    }
    /**
     * @param linkList
     *            链表中的头结点
     * @param K
     *            在链表中的位置
     * @return 找到的结点,如果没有找到,则返加NULL
     */
    public node findNode(node linkList, int k)
    {
        int i = 1;
        node a;
        //        初始化时,令a指向第一个元素,i为计数器.
        a = linkList.getLink();
        while (a != null && i < k)
        {
            a = a.getLink();
        }
        //        逐步的取下一个数.
        return a;
    }
    /**
     * @param linkList 链表的头结点
     * @param k 插入的位置,将在这个位置之前插入
     * @param elem 要插入的结点
     * @return 是否成功,成功返回0
     */
    public int insertNode(node linkList, int k, node elem)
    {
        node a, b;
        if (k == 1)
        {
            elem.setLink(linkList);
        }
        else
        {
            a = findNode(linkList, k - 1);
            if (a != null)
            {
                b = a.getLink();
                a.setLink(elem);
                elem.setLink(b);
            }
            else
                return  - 1;
        }
        return 0;
    }
    /**
     * @param linkList 链表的头结点
     * @param k 位置
     * @return 是否成功,成功返回0
     */
    public int deleteNode(node linkList, int k)
    {
        node a, b;
        if (k == 1)
        {
            linkList.setLink(null);
        }
        else
        {
            a = findNode(linkList, k);
            if (a != null)
            {
                b = a.getLink();
                a.setLink(b.getLink());
                return  - 1;
            }
        }
        return 0;
    }
}
--------------------------------------------------------------------------------------
/*
 * 创 建 人 Administrator
 * 创建日期 2004-9-10
 *
 */
package org.arliang;
/**
 * @author Administrator
 *
 * 选首领.N个游戏者围成一圈,从第一个人开始顺序报数1,2,3.凡报到3者退出圈子,最后留在圈中的人为首领.
 * 结点编号是从0开始而不是从1开始.
 */
public class selectHead
{

    /**
     * 创建链表.创建给定数目个数的链表,并将其首尾连起形成环.
     *
     * @param n
     * @return 该链表的首节点
     */
    public node createList(int n)
    {
        node headNode = new node();
        int i = 1;
        headNode.setData(0); //头节点
        node a = headNode;
        while (i < n)
        {
            node b = new node();
            b.setData(i);
            a.setLink(b);
            a = b;
            i++; //该循环不能丢,否则成为死循环
        }
        a.setLink(headNode); //形成环
        return headNode;
    }
    /**
     * 输出当前链表中的数据
     *
     * @param linkList 链表的头结点
     */
    public void outputData(node linkList)
    {
        //        形成环之后要注意标识头结点的位置,对于只有一个了节点的链其可能形成死循环.
        node a;
        a = linkList;
        node b = a.getLink();
        while (b.getData() != a.getData())
        {
            //由于是环,故这样判断,但该判断并不严密
            System.out.print(b.getData());
            b = b.getLink(); //获取下一个节点
        }
    }
    /**
     * 执行该游戏
     * @param linkList 链表的头结点
     * @param n 该链表的总个数
     */
    public void play(node linkList, int n)
    {
        int k;
        node a = linkList;
        node b;
        k = n;
        while (k > 1)
        {
            //从当前节点向下走一个节点后,则当前的报数应该是2
            a = a.getLink(); //该节点的报数应该是2
            b = a.getLink(); //该节点的报数应该是3,要删除
            a.setLink(b.getLink()); //将B节点删除.
            a = a.getLink(); //将当前节点换为删除节点之后的节点.
            k--; //已删除一个节点
        }
        System.out.print("结果" + Integer.toString(a.getData()));
            //输出最后还在圈中的节点
    }
    /**
     * @param args
     */
    public static void main(String[]args)
    {
        selectHead sh = new selectHead(); //创建对象
        node a = sh.createList(9); //创建链表环
        sh.outputData(a); //查看数据
        sh.play(a, 9); //执行游戏.
    }
}

JTable中点击鼠标右键弹出菜单

在swing的开发中,对JTable的操作可能会用到在表中点击鼠标右键弹出一个菜单...
  • a78460750
  • a78460750
  • 2013年07月25日 18:30
  • 5382

Java程序员必看--扩展鼠标右键菜单功能

背景:今天在做点东西,敲了好多cd命令,目的就是从dos进入一个目录去执行一个ant命令。是在是太无聊了!这个项目很大目录众而且层次很深,我需要从资源管理器去浏览其中的代码,可是每次打开都是我的电脑的...
  • g_wins
  • g_wins
  • 2015年10月29日 15:34
  • 1330

18. JAVA 图形界面 Part 2(JTextComponent、事件处理、单选按钮、复选框、列表框、下拉列表框、菜单组件、文件选择) ----- 学习笔记

18.9 文本组件: JTextComponent        各个软件系统中都存在文本
  • forfan06
  • forfan06
  • 2014年10月28日 09:49
  • 2363

DatabaseMetaData获取数据库信息和表信息(表的列名,类型,主键等)SQL java

import java.sql.*; public class GetDBInfo { public GetDBInfo() { } public static voidmain(S...
  • lanmenghcc
  • lanmenghcc
  • 2013年11月07日 11:09
  • 1793

java web从零单排第二十一期《Hibernate》主键的生成方式,用户增加与显示用户列表

1.新建register.jsp username: password: 2.新建listA...
  • u010392759
  • u010392759
  • 2013年09月12日 14:08
  • 1002

Java环境变量一键配置

  • 2017年10月25日 09:06
  • 12KB
  • 下载

一键java环境变量配置脚本工具

  • 2017年08月22日 09:13
  • 2KB
  • 下载

Java反编译-支持右键

  • 2017年05月09日 00:11
  • 693KB
  • 下载

java 右键菜单

  • 2014年12月28日 15:41
  • 2KB
  • 下载

java 一键设置环境变量

  • 2015年05月18日 12:16
  • 145KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java--单键表
举报原因:
原因补充:

(最多只允许输入30个字)