単一のリストを達成

伝達関数パラメータ、参照の使用であるため、プログラムはC ++のプログラムになるように、

する#include <stdio.hに>
する#include <STDLIB.H>
の#define ElemType INT
のtypedef構造体lノード{
ElemTypeデータ。
次のstruct lノード*;
int型の長さ。
} lノード、* LINKLIST。
INT CreatList(LINKLIST&L){
L =(LINKLIST)はmalloc(はsizeof(lノード))。
(L == NULL){のprintf( "创建失败");戻り0;}もし
L->次= NULL;
1を返します。
} //创建一个链表的头结点
空隙ListTailInsert(LINKLIST&L、ElemType電子){
LINKLISTのR、S。
R = L。
S =(LINKLIST)はmalloc(はsizeof(lノード))。
S->データ= E;
S->次= NULL;
(!R->次= NULL){ながら
次のR = R->。
}
R->次= S。
} //尾插法填充节点
無効LISTPRINT(LINKLIST&

0 = I値int;
P = L->次に、
のprintf( "リストである:");
一方(P = NULL!){
のprintf( "%のD"、P->データ);
P = P->次に、
I ++ ;
}
のprintf( "\ N-");
L-> I =長さ;
のprintf( "リストの長さ:%D \ N-"、L->長さ);
} //プリントリスト
lノード* getElem(LINKLIST&L、 INT I){
int型J = 1;
LINKLIST L-P =>次に、
IF(I <1 || I> L->長さ){
のprintf( "私は無効位置を見つける");
}
!一方(P = NULL ){
(Jの== I)P {戻りIF;}
P = P->次に、
J ++;
}
} // i番目のノード見つける。
)lノードLocateElem *(L&LINKLISTをelemType E {
LINKLIST = L-P>次、
フラグ= 0のint;
ながら(!P = NULL){
(P-> IFデータ== E){フラグ= 1;戻りP;}
p = P->次。
}
(フラグに== 0){のprintf( "ノードが見つからない")IF;}
} //ルックアップテーブルノードの値に従って、ノードを返し
ボイドListInsert(LINKLIST&L、Iは、INT、elemType E){
LINKLIST Sを、 P;
IF(I <0 || I> L->長さ){( "私は無効位置に挿入")のprintf;}
S =(LINKLIST)はmalloc(はsizeof(lノード));
S->データ= E。
IF(I == 1){
S->次に= L->次に、
L->次に= S;
}最初のノードの挿入の特殊なケース//
他の{P = getElem(L、 I-1) ;
S->次に= P->次に、
P->次に= S;}
} // Eはノードの値である
ボイドListDelete(LINKLIST L&、IをINT){
LINKLIST P;
IF(I <0 || I > L->長さ){のprintf( " )iは削除無効位置";}
。(I == 1){IF
; L->次に= L->ネクスト>次に
第1ノード//}特別な場合削除
他の{getElem P =(L、I-1);
P->次に= P->ネクスト>次に;}
} // i番目のノードを削除
メインINT(){
LINKLISTのL。
LINKLIST Q;
LINKLIST pを。
CreatList(L)。
ListTailInsert(L、1)。
ListTailInsert(L、2)。
ListTailInsert(L、3);
ListTailInsert(L、4);
ListTailInsert(L、5);
LISTPRINT(L)。
Q = LocateElem(L、2)。
printf( "%d個の\ n"、Q->データ)。
P = GetElem(L、3);
printf( "%d個の\ n"、P->データ)。
ListInsert(L、1,6)。
ListInsert(L、3,7)。
LISTPRINT(L)。
ListDelete(L、1)。
ListDelete(L、5);
LISTPRINT(L)。
0を返します。
}

ため、次の営業成績

おすすめ

転載: www.cnblogs.com/Yshun/p/11140924.html