ここでの値は、第3のノードの前に挿入され
1 / * 特定の(第3ノード)は、ノード要素の前に挿入* / 2 。3の#include <stdio.hの> 4の#include <STDLIB.H> 。5 。6 // リンクリストノード構造 7のtypedef 構造体のリンク{ 8 INT データ; 9 構造体リンク* 次に、 10 }のリンク; 11 12は、 // リストの初期化 13がリンク* initByTailInsert(){ 14 リンクPHEAD * = NULL; // 作成ヘッドポインタ 15 リンクfirst_node = *(*リンク)はmalloc(sizeof(リンク)); // 最初のノードを作成します 16 // 最初のノードが初期化する 。17 first_node-> =データ1。; 18である first_node->次に= NULL; 19 PHEAD = first_node; // 最初のノードへのヘッド・ポインタ・ポイント 20は 21である // 割り当てテールインサート 22である ため(INT Iは= 2、I < 5。 ; I ++ ){ 23は リンクnew_node = *(*リンク)はmalloc(はsizeof(リンク)); // 新しいノードを要求する 24 new_node->データ= I; 25 new_node->次に= NULL; 26 first_node->次に= new_node; // 最初のノード新しいノード・アプリケーションへのポインタフィールドポイント 27 first_node = new_node; // 第1シフトノードの後 28 } 29 30 のprintf(" ヘッドポインタの値である:%D \ N- "、phead->データ); // 1 31は 戻り PHEAD; // 最初のノードに戻りを指し示すヘッドポインタ 32 } 33が 34である 35 36 ボイド ShowLink(リンク* PHEAD){ 37 リンクTMP = PHEAD *; // ポインタTMPからヘッド、TMPは、ヘッドポインタで 38 // 次のノードへの長いTMPポインタ出力文が実行され、NULLではありません。 39 しばらく(!TMP = NULL){ 40 のprintf(" %d個"、tmp-> データ)。 41 TMP = tmp-> 次。 42 } 43 のprintf(" \ n " ); 44 } 45 46リンク* getElemByNum(リンク* PHEAD、int型NUM){ 47 のint J = 1。// 计数器 48 リンク* TMP = PHEAD。 49 一方(TMP = NULL && NUM>!J){ 50 TMP = tmp-> 次。 51 ++ J ; 52である } 53が IF(TMP == NULL || NUM < J){ 54は // のprintf( "Nこの要素が\存在しない"); 55 戻りNULL; 56である } 57が 他{ 58 リターンTMP; 59 } 60 } 61は 62である 。// 第3ノード番号を挿入する前に、 63は 空隙 insertElem(PHEADリンク*、INT elem1 ,, INT のElem2の){ 64 リンク* TMP = PHEAD; 65 リンク* front_node = getElemByNum(TMP、elem1、 - 1。 )。 66 = *(*リンク)はmalloc(リンクinsert_node はsizeof (リンク)); 67 insert_node->データ= ののElem2; 68 insert_node->次に= getElemByNum(TMP、elem1); 69 front_node->次に= insert_node; 70 ShowLink(TMP ); 71である 72 } 73である ボイドメイン(){ 74 // 初期化リスト(1,2,3,4) 75 のprintf(" 初期化リストである:\ N- " ); 76 リンク* = initByTailInsert PHEAD(); // の作成後のヘッドポインタを取得するために初期化され、ヘッドポインタ、 77 ShowLink(PHEAD); 78 79 INT値= 0 ; 80 (printfの" 第3のノードの値を挿入する前に、入力します。" ); 81 scanfのを(" %のD "、&値); 82 のprintf(" 第3のノードの前の挿入%までリストの後にDである:\ N- " 、値); 83 insertElem(PHEAD、3。 、値); 84 85 }