する#include <stdio.hに> する#include <STDLIB.H> の#include <string.hの> //#LENはsizeof(LinkedListの)を定義します。 構造体の学生{typedefは 、int型のスコア 文字名[10]。 構造体の学生は、次の*; } LinkedListの; / ** *链表的创建、N为创建的节点的个数 ** / LinkedListの*作成(int型N){ LinkedListの*ヘッド、*ノード、* END; ヘッド=(LinkedListの*)はmalloc(はsizeof(LinkedListの))。 終了=ヘッド。 文字名[10]。 以下のために(INT iが= 0、I <N; I ++){ ノード=(LinkedListの*)はmalloc(はsizeof(LinkedListの))。 printf( "%学生ドールの名前を入力します:\ n"、I + 1); scanf関数( "%s"は、名); strcpyの(ノード- >名、名); printf( "%学生ドールsのスコアを入力します。 scanf関数( "%dの"、およびノード- >スコア)。 END->次に=ノードと、 エンドノード=; } END->次に= NULL; 戻りヘッド; } / ** *データリンクされたリストに、最初のインデックスのインデックスノード、元のリストポインタに挿入するノード、古い点のノード ** / ボイド挿入(LinkedListの*オールド、LinkedListの*ノード、INTインデックス){ LinkedListの* TEMP =旧; INT N- = 0; 一方、(N <インデックス&& temp- !>次に= NULL){ TEMP = temp->次に、 N - ++; } IF(TEMP = NULL){! ノード- >次に= temp->次に、 temp->次に=ノード; } そう プット(「インデックス範囲outof 「); } / * *追加のリスト要素 * / 無効のappend(LinkedListの*リスト、LinkedListの*追記){ LinkedListの* P; P =リスト。 ながら(!P->次に= NULL){ P = P->次; } P->次=追記。 P = APPEND。 } / ** *链表的打印展示 ** / 空隙DISPLAYLIST(LinkedListの*リンク){ 一方(リンク- >次= NULL!){ リンク=リンク- >次に、 printf( "名:%sの\ tscoreた:%d \ n"は、リンク- >名、リンク- >スコア); } } / ** *链表的删除 ** / 空隙dellist(LinkedListの*リンク、INTインデックス){ LinkedListの* T。 int型温度= 0; (!TEMP <インデックス&&リンク- >次= NULL){一方 、T =リンク。 一時++; リンク=リンク- >次。 } (リンク= NULL!){もし T->次=リンク- >次に、 無料(リンク)。 プット(「範囲outofインデックス」)。 / ** *変更のリスト ** / 空隙updateList(LinkedListの*リンク、LinkedListのノード*、INTインデックス){ LinkedListのリンク* = T、T1 *; INT TEMP = 0; 一方( TEMP <&& T-指数>次に= NULL){! T1 = T; TEMP ++; T = T->次に; } IF(T = NULL){! ノード- >次に= T->次に、 T1->次に=ノード; フリー(T); } {他 プット(「範囲索引outof」); } } / ** *指定されたノードのリストを取得 *リンクリストポインタの先頭を指すようヘッド *最初のいくつかのノードのインデックスを取得する ** / LinkedListのgetNode(LinkedListのヘッド*、INTインデックス){ int型I = 0; LinkedListの* P、ノード; P =ヘッド。 しばらく(!私は<インデックス&& P = NULL){ I ++; P = P - >次。 } ノード= * P。 ノードを返します。 } / ** *链表数据域的打印 ** / 無効表示(LinkedListのノード){ のprintf( "LinkedListの:{名:%S、スコア:%のD} \ n"は、node.name、node.score)。 } INTメイン(ボイド){ int型N。 プット(「ノード番号を入力してください:」); scanf関数( "%のD"、&N); LinkedListの*リスト=(n)を作成します。 DISPLAYLIST(リスト); プット(「の後にノードを挿入します。」); LinkedListのは一時、*ノード。 temp.score = 88; strcpyの(temp.name、 "GWB"); ノード=&TEMP。 インサート(リスト、ノード、1); DISPLAYLIST(リスト); LinkedListの* TP =(LinkedListの*)はmalloc(はsizeof(LinkedListの))。 strcpyの(TP->名、 "小明"); APPEND(リスト、TP); DISPLAYLIST(リスト); プット( "変更後:"); LinkedListの* TP1 =(LinkedListの*)はmalloc(はsizeof(LinkedListの))。 tp1->スコア= 99; strcpyの(tp1->名、 "小芳"); updatelist(リスト、tp1,3)。 DISPLAYLIST(リスト); プット( "削除した後:"); dellist(リスト2)。 DISPLAYLIST(リスト); LinkedListのノード= getnode(リスト2)。 ディスプレイ(ノード)。 0を返します。 }