<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發(fā)
    隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
    數(shù)據(jù)加載中……

    單向鏈表的簡(jiǎn)單實(shí)現(xiàn)

    要求:寫一個(gè)示例程序,顯示一個(gè)單鏈表.這個(gè)鏈表的功能:
    1.在鏈表頭插入一個(gè)數(shù)據(jù)項(xiàng)
    2.在鏈表頭刪除一個(gè)數(shù)據(jù)項(xiàng)
    3.遍歷鏈表顯示它的內(nèi)容
    實(shí)現(xiàn)代碼如下:
    package com;
    /**
     * 結(jié)點(diǎn)類
     * 
    @author zdw
     *
     
    */

    class Link
    {
        
    //數(shù)據(jù)區(qū)域
        public int data;
        
    //指針區(qū)域
        public Link next;
        
    //構(gòu)造一個(gè)數(shù)據(jù)為data的結(jié)點(diǎn),默認(rèn)指針為空
        public Link(int data)
        
    {
            
    this.data = data;
            next 
    = null;
        }

        
    //顯示結(jié)點(diǎn)的數(shù)據(jù)
        public void displayLink()
        
    {
            System.out.println(
    "Data:" + data);
        }

    }

    /**
     * 鏈表類
     * 
    @author zdw
     *
     
    */

    class LinkList
    {
        
    //頭結(jié)點(diǎn)
        private Link first;
        
    //構(gòu)造一個(gè)空的鏈表
        public LinkList()
        
    {
            first 
    = null;
        }

        
        
    public void insertLink(int data)
        
    {
            
    //構(gòu)造一個(gè)內(nèi)容為data的結(jié)點(diǎn)
            Link newLink = new Link(data);
            
    //將first中的地址賦予新建的結(jié)點(diǎn)指針區(qū)域中
            newLink.next = first;
            
    //讓first結(jié)點(diǎn)的指針指向newLink
            first = newLink;
        }

        
    //判斷LinkList是否為空
        public boolean isEmpty()
        
    {
            
    return first == null;
        }

        
        
    public Link deleteLink()
        
    {
            
    //將first中保存到臨時(shí)變量temp中
            Link temp = first;
            
    //將下一個(gè)結(jié)點(diǎn)的指針地址轉(zhuǎn)移到first中
            first = first.next;
            
    return temp;
        }

        
        
    public void displayLinkList()
        
    {
            Link current 
    = first;
            
    while(current != null)
            
    {
                current.displayLink();
                current 
    = current.next;
            }

            System.out.println();
        }

    }

    /**
     * 測(cè)試類
     * 
    @author zdw
     *
     
    */

    public class LinkListApp
    {
        
    public static void main(String[] args)
        
    {
            LinkList ll 
    = new LinkList();
            ll.insertLink(
    1);
            ll.insertLink(
    2);
            ll.insertLink(
    3);
            ll.insertLink(
    4);
            System.out.println(
    "linkList中的內(nèi)容是:");
            ll.displayLinkList();
            
    //LinkList不為空
            while(!ll.isEmpty())
            
    {
                
    //刪除
                ll.deleteLink();
            }

            System.out.println(
    "刪除后的內(nèi)容是:");
            ll.displayLinkList();
        }


    }

    現(xiàn)在要求為該程序加入按指定鍵查找和刪除的方法.并加以測(cè)試.
    代碼如下:
    package com;

    /**
     * 結(jié)點(diǎn)類
     * 
     * 
    @author zdw
     * 
     
    */

    class Link
    {
        
    // 數(shù)據(jù)區(qū)域
        public int data;
        
    // 指針區(qū)域
        public Link next;

        
    // 構(gòu)造一個(gè)數(shù)據(jù)為data的結(jié)點(diǎn),默認(rèn)指針為空
        public Link(int data)
        
    {
            
    this.data = data;
            next 
    = null;
        }


        
    // 顯示結(jié)點(diǎn)的數(shù)據(jù)
        public void displayLink()
        
    {
            System.out.println(
    "Data:" + data);
        }

    }


    /**
     * 鏈表類
     * 
     * 
    @author zdw
     * 
     
    */

    class LinkList
    {
        
    // 頭結(jié)點(diǎn)
        private Link first;

        
    // 構(gòu)造一個(gè)空的鏈表
        public LinkList()
        
    {
            first 
    = null;
        }


        
    public void insertLink(int data)
        
    {
            
    // 構(gòu)造一個(gè)內(nèi)容為data的結(jié)點(diǎn)
            Link newLink = new Link(data);
            
    // 將first中的地址賦予新建的結(jié)點(diǎn)指針區(qū)域中
            newLink.next = first;
            
    // 讓first結(jié)點(diǎn)的指針指向newLink
            first = newLink;
        }


        
    // 判斷LinkList是否為空
        public boolean isEmpty()
        
    {
            
    return first == null;
        }

        
    //查找
        public Link find(int key)
        
    {
            
    //從第一個(gè)開始查找
            Link current = first;
            
    while(current.data != key)
            
    {
                
    if(current.next == null)
                    
    return null;
                
    else
                    
    return current.next;    
            }

            
    return current;
        }

        
    //用指定key刪除
        public Link delete(int key)
        
    {
            Link current 
    = first;
            Link previous 
    = first;
            
    while(current.data != key)
            
    {
                
    if(current.next == null)
                    
    return null;
                
    else
                
    {
                    previous 
    = current;
                    current 
    = current.next;
                }

            }

            
    if(current == first)
            
    {
                first 
    = first.next;
            }

            
    else
            
    {
                previous.next 
    = current.next;
            }

            
    return current;
        }

        
        
    public Link deleteLink()
        
    {
            
    // 將first中保存到臨時(shí)變量temp中
            Link temp = first;
            
    // 將下一個(gè)結(jié)點(diǎn)的指針地址轉(zhuǎn)移到first中
            first = first.next;
            
    return temp;
        }


        
    public void displayLinkList()
        
    {
            Link current 
    = first;
            
    while (current != null)
            
    {
                current.displayLink();
                current 
    = current.next;
            }

            System.out.println();
        }

    }


    /**
     * 測(cè)試類
     * 
     * 
    @author zdw
     * 
     
    */

    public class LinkListApp
    {
        
    public static void main(String[] args)
        
    {
            LinkList ll 
    = new LinkList();
            ll.insertLink(
    1);
            ll.insertLink(
    2);
            ll.insertLink(
    3);
            ll.insertLink(
    4);
            System.out.println(
    "linkList中的內(nèi)容是:");
            ll.displayLinkList();
            
    // LinkList不為空
            Link f = ll.find(3);
            
    if(f != null)
            
    {
                System.out.println(
    "已經(jīng)找到:" + f.data);
            }

            
    else
            
    {
                System.out.println(
    "沒有該項(xiàng)");
            }

            Link d 
    = ll.delete(3);
            
    if(d != null)
            
    {
                System.out.println(
    "成功刪除:" + d.data);
            }

            
    else
            
    {
                System.out.println(
    "沒有該項(xiàng)");
            }

            System.out.println(
    "刪除后的內(nèi)容是:");
            ll.displayLinkList();
        }


    }



    posted on 2007-12-29 12:08 々上善若水々 閱讀(1785) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)與算法

    主站蜘蛛池模板: 成全视频在线观看免费| 四虎www成人影院免费观看| 色婷婷亚洲一区二区三区| 亚洲电影国产一区| 亚洲无码精品浪潮| 大陆一级毛片免费视频观看| 无码人妻AV免费一区二区三区| 国产精品亚洲综合网站| 亚洲精品**中文毛片| 亚洲伊人久久精品影院| 免费人成在线观看网站品爱网日本 | 一区二区三区免费视频观看| 亚洲日本一线产区和二线 | 亚洲中文字幕无码爆乳app| 亚洲欧洲在线观看| 情人伊人久久综合亚洲| 国产91精品一区二区麻豆亚洲| 日本v片免费一区二区三区| 一二三四免费观看在线视频中文版 | 成人免费网站视频www| 亚洲AV无码XXX麻豆艾秋| 久久精品国产亚洲AV久| 亚洲网站视频在线观看| 亚洲性天天干天天摸| 亚洲不卡中文字幕无码| 亚洲热妇无码AV在线播放| MM131亚洲国产美女久久| 亚洲午夜爱爱香蕉片| 亚洲精品一级无码中文字幕| 免费少妇a级毛片人成网| 免费久久精品国产片香蕉| 四虎永久在线精品视频免费观看| 全免费a级毛片免费**视频| 国产精品视频永久免费播放| 美女视频黄a视频全免费| 日韩av无码成人无码免费| 99久久免费精品国产72精品九九| 99re热免费精品视频观看| 成全视频在线观看免费高清动漫视频下载 | 37pao成人国产永久免费视频| 99爱在线观看免费完整版|