最後から二番目のノードKのN14-出力

タイトル説明

入力されたリンクリスト、リンクリスト出力の逆数k番目のノード。
1  / ** 
2  *リストの入力、リンクされたリスト内のノードk番目の逆の出力。
3  * @author ソニア
 4  *思考:スタックk回ポップ次いで、スタック、リンクされたリスト内のすべてのノードを新しいスタックを作成するために、初めてK Kは最後から二番目のノードです。(これは、スタックを構築するためにあまりにも面倒必要です)
 5つの ノードの合計数を取得するために、再び最初のトラバーサル:* 2つのアイデア。次いで、次のノードNKでk番目のノードの逆数です。
6  *
 7  *
 8   * / 
9  / * //このクラスは、再びここで再定義が定義されていない
 10  * {クラスListNode
 11。     INTヴァル;
 12である     ListNode次に= NULL;
 13である 
14      ListNode(INTヴァル){
 15          本ヴァル= .val;
 16      }
 17  }
 18である  * / 
19。 
20  
21  パブリック クラスN14_FindKthToTail {
 22      
23       公衆 ListNode FindKthToTail(ListNodeヘッド、int型K){
 24           であれば(ヘッド== NULL戻りヘッド。
25           int型のカウント= 0 ;
26           ListNodeのP。
27           のための(!; P = P =ヘッドはnull ; P = {p.next)
 28                のカウント++ ;
29           }
 30           であれば(数<K)リターン ヌル31           、P = ヘッド。
32           のためには、int型 I = 1; I <=カウント-kは、iは++ ){
 33               、P = p.next。
34           }         
 35          リターンP。
36  
37          }
 38      
39  
40      公共 静的 ボイドメイン(文字列[]引数){
 41          // TODO自動生成方法スタブ
42          N14_FindKthToTail N14 = 新しいN14_FindKthToTail()。
43          ListNode listNode = 新しい ListNode(1 )。
44          ListNode L2 = 新しい ListNode(2);
45          ListNode L3 = 新しい ListNode(3 )。
46          ListNode L4 = 新しい ListNode(4 )。
47          ListNode L5 = 新しい ListNode(5 )。
48          listNode.next = L2。
49          L2.next = L3。
50          L3.next = L4。
51          L4.next = L5。
52          ListNodeのP。
53          、P = n14.FindKthToTail(listNode、1 )。
54          のSystem.out.println(p.val)。
55      }
 56  
57 }

 

おすすめ

転載: www.cnblogs.com/kexiblog/p/11075529.html