1- class LinkedList <T >{
1+ class LinkedList <T > {
2+ _Node ? _dummyHead;
3+ late int _size;
24
3- late _Node _head;
4- late int _size;
5+ LinkedList () {
6+ _dummyHead = new _Node .all (null ,null );
7+ _size = 0 ;
8+ }
59
6- LinkedList (){
7- _head = new _Node .empty ();
8- _size = 0 ;
9- }
10+ int getSize () {
11+ return _size;
12+ }
1013
11- int getSize () {
12- return _size;
13- }
14+ bool isEmpty () {
15+ return _size == 0 ;
16+ }
1417
15- bool isEmpty (){
16- return _size == 0 ;
17- }
18+ remove (int index){
19+ if (index < 0 || index > _size) {
20+ throw Exception ("Remove Failed,Illegal index" );
21+ }
22+ _Node ? prev = _dummyHead;
23+ for (var i = 0 ;i< index ;i++ ){
24+ prev = prev? .next;
25+ }
26+ _Node ? retNode = prev! .next;
27+ prev.next = retNode! .next;
28+ retNode.next = null ;
29+ _size -- ;
30+ return retNode.t;
31+ }
32+
33+ //从链表中删除第一个元素,返回删除元素
34+ T ? removeFirst (){
35+ remove (0 );
36+ }
37+ //从链表中删除第一个元素,返回删除元素
38+ T ? removeLast (){
39+ remove (_size - 1 );
40+ }
1841
19- addFirst (T t){
42+
43+ //在链表的index位置添加新的元素e
44+ add (int index, T t) {
45+ if (index < 0 || index > _size) {
46+ throw Exception ("Add Failed,Illegal index" );
47+ }
48+ // if(index == 0){
49+ // addFirst(t);
50+ // }else{
51+ _Node ? prev = _dummyHead;
52+ for (var i = 0 ; i < index; i++ ) {
53+ prev = prev? .next;
54+ }
55+ _Node _node = new _Node .head (t);
56+ _node.next = prev? .next;
57+ prev? .next = _node;
58+ _size++ ;
59+ // }
60+ }
61+
62+ addLast (T t) {
63+ add (_size, t);
64+ }
65+
66+ addFirst (T t) {
2067// _Node _node =new _Node.head(t);
2168// _node.next = _head;
2269// _head = _node;
70+ add (0 , t);
71+ }
2372
24- _head = new _Node .all (t, _head);
25- _size++ ;
26- }
73+ //获取链表第index位置的元素
74+ T get (int index){
75+ if (index < 0 || index > _size) {
76+ throw Exception ("Get Failed,Illegal index" );
77+ }
78+ _Node ? cur = _dummyHead! .next;
79+ for (var i= 0 ;i< index;i++ ){
80+ cur = cur! .next;
81+ }
82+ return cur! .t;
83+ }
2784
28- //在链表的index位置添加新的元素e
29- add (int index,T t){
30- if (index< 0 || index> _size){
31- throw Exception ("Add Failed,Illegal index" );
32- }
33- if (index == 0 ){
34- addFirst (t);
35- }else {
36- _Node prev = _head;
37- for (var i = 0 ;i< index- 1 ;i++ ){
38- prev = prev.next;
39- }
40- _Node _node = new _Node .head (t);
41- _node.next = prev.next;
42- prev.next = _node;
43- _size++ ;
85+ T getFirst (){
86+ return get (0 );
87+ }
88+ T getLast (){
89+ return get (_size- 1 );
90+ }
91+ set (int index,T t){
92+ if (index < 0 || index > _size) {
93+ throw Exception ("Set Failed,Illegal index" );
94+ }
95+ _Node ? cur = _dummyHead! .next;
96+ for (var i = 0 ;i< index;i++ ){
97+ cur = cur! .next;
98+ }
99+ cur! .t= t;
100+ }
101+
102+ bool contains (T t){
103+ _Node ? cur = _dummyHead! .next;
104+ for (var i = 0 ;i< _size- 1 ;i++ ){
105+ if (cur! .t.compareTo (t)){
106+ return true ;
44107 }
45- }
108+ cur = cur.next;
109+ }
110+ return false ;
111+ }
46112
47- addLast (T t){
48- add (_size, t);
49- }
113+ @override
114+ String toString () {
115+ StringBuffer res = new StringBuffer ();
116+ for (_Node ? cur = _dummyHead! .next ; cur != null ; cur = cur.next){
117+ res.write (cur);
118+ res.write ("->" );
119+ }
120+ res.write ("NULL" );
121+ return res.toString ();
122+ }
50123}
51124//节点
52- class _Node <T >{
53- late _Node next;
54- late T t;
125+ class _Node <T > {
126+ _Node ? next;
55127
56- _Node . empty () ;
128+ T ? t ;
57129
58- _Node .all ( this .t, this .next );
130+ _Node .empty ( );
59131
60- factory _Node .head (T t){
61- dynamic i ;
62- var result = new _Node .all (t, i);
63- return result;
64- }
132+ _Node .all (this .t, this .next);
65133
66- @override
134+ factory _Node .head (T t) {
135+ var result = new _Node .all (t, null );
136+ return result;
137+ }
138+
139+ @override
67140 String toString () {
68141 return t.toString ();
69142 }
70- }
143+ }
0 commit comments