gpt4 book ai didi

Java数据结构之简单链表的定义与实现方法示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java数据结构之简单链表的定义与实现方法示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了java数据结构之简单链表的定义与实现方法。分享给大家供大家参考,具体如下:

1、概述:

1、原理:

只有一个数据项(链接点link),每个数据插入时都是对第一个数据的引用.

2、插入数据说明:

当链表没有数据时,插入的值就是第一个数据,如果链表里有数据,就把当前的数据的next指针指向第一个数据.

3、插入数据图:

Java数据结构之简单链表的定义与实现方法示例

4、特点:先进后出 。

5、实现功能:

数据插入,指定位置插入,显示,查询,删除等 。

6、删除原理 。

Java数据结构之简单链表的定义与实现方法示例

7、插入头节点原理 。

Java数据结构之简单链表的定义与实现方法示例

2、实现:

1、创建节点 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
  * @描述     节点
  * @项目名称   java_datastruct
  * @包名     com.struct.linklist
  * @类名     node
  * @author   chenlin
  * @date    2010年6月26日 上午7:58:59
  * @version   1.0
  */
public class node {
   public long data;
   public node next;
   public long getdata() {
     return data;
   }
   public void display(){
     system.out.print(data + " " );
   }
   public node( long data) {
     this .data = data;
   }
   public void setdata( long data) {
     this .data = data;
   }
   public node getnext() {
     return next;
   }
   public void setnext(node next) {
     this .next = next;
   }
}

2、链表实现 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/**
  * @描述     链表
  * @项目名称   java_datastruct
  * @包名     com.struct.linklist
  * @类名     linklist
  * @author   chenlin
  * @date    2010年6月26日 上午8:00:28
  * @version   1.0
  */
public class linklist {
   private node first;
   public linklist(){
     first = null ;
   }
   /**
    * 插入数据
    * @param value
    */
   public void insertfirst( long value){
     node newnode = new node(value);
     if (first == null ) {
       first = newnode;
     } else {
       //把first节点往下移动
       newnode.next = first;
       //把插入的节点作为新的节点
       first = newnode;
     }
   }
   /**
    * 删除头节点
    * @param value
    * @return
    */
   public node deletefirst(){
     if (first == null ) {
       throw new runtimeexception( "链表数据不存在" );
     }
     node temp = first;
     first = temp.next;
     return temp;
   }
   public node deletebykey( long key){
     node current = first;
     node last = first;
     while (current.data != key){
       if (current.next == null ) {
         system.out.println( "没找到节点" );
         return null ;
       }
       last = current;
       current = current.next;
     }
     if (current == first) {
       //return deletefirst();
       //指向下个就表示删除第一个
       first = first.next;
     } else {
       last.next = current.next;
     }
     return current;
   }
   /**
    * 显示所有的数据
    */
   public void display(){
     if (first == null ) {
       //throw new runtimeexception("链表数据不存在");
       return ;
     }
     node current = first;
     while (current != null ){
       current.display();
       current = current.next;
     }
     system.out.println( "---------------" );
   }
   /**
    * 查找节点1
    * @param value
    * @return
    */
   public node findbyvalue( long value){
     node current = first;
     while (current != null ){
       if (current.data != value) {
         current = current.next;
       } else {
         break ;
       }
     }
     if (current == null ) {
       system.out.println( "没找到" );
       return null ;
     }
     return current;
   }
   /**
    * 查找节点2
    *
    * @param key
    * @return
    */
   public node findbykey( long key) {
     node current = first;
     while (current.data != key) {
       if (current.next == null ) {
         system.out.println( "没找到" );
         return null ;
       }
       current = current.next;
     }
     return current;
   }
   /**
    * 根据索引查找对应的值
    * @param position
    * @return
    */
   public node findbyposition( int position){
     node current = first;
     //为什么是position - 1,因为要使用遍历,让current指向下一个, 所以position - 1的下个node就是要找的值
     for ( int i = 0 ; i < position - 1 ; i++) {
       current = current.next;
     }
     return current;
   }
   public static void main(string[] args) {
     linklist linklist = new linklist();
     linklist.insertfirst( 21 );
     linklist.insertfirst( 22 );
     linklist.insertfirst( 23 );
     linklist.insertfirst( 24 );
     linklist.insertfirst( 25 );
     linklist.insertfirst( 26 );
     linklist.insertfirst( 27 );
     system.out.println( "我测试结果:" );
     linklist.display();
     system.out.println( "---查找-------------------------------------" );
     linklist.findbykey( 25 ).display();
     system.out.println( "--删除first-------------------------------------" );
     //linklist.deletefirst().display();
     ///linklist.deletefirst().display();
     //linklist.deletefirst().display();
     //linklist.deletefirst().display();
     system.out.println( "-删除指定值---------------------------------------" );
     linklist.deletebykey( 27 ).display();
     linklist.deletebykey( 21 ).display();
     system.out.println( "----------------------------------------" );
     linklist.display();
   }
}

显示结果:

Java数据结构之简单链表的定义与实现方法示例

希望本文所述对大家java程序设计有所帮助.

原文链接:http://blog.csdn.net/lovoo/article/details/51674479 。

最后此篇关于Java数据结构之简单链表的定义与实现方法示例的文章就讲到这里了,如果你想了解更多关于Java数据结构之简单链表的定义与实现方法示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com