プログラミングC: 投稿 12 – 配列に設定リンクの一覧
コンテンツ
リンクのリストは、アレイまたはポインタに設置することができる. この記事では、配列を使用する方法を紹介します :), このリストを入力することは、多くの場合、次のリストと呼ばれている.
1. [設定] (レポート) リスト
このリストを宣言するには、我々は持っている必要があります 1 最大要素数Nのデータ型の配列は、アイテムである (これは、データ項目の概要のタイプです, それはint型になりますとき, 構造型フロートや学生). もっと必要 1 可変サイズのリストは、既存の要素の数を表す。.
具体的には、以下:
#define N 100 //so phan tu toi da la 100 typedef int item; /*kieu cac phan tu la item ma cu the o day item la kieu int */ typedef struct { item Elems[N]; //mang kieu item int size; //so phan tu toi da cua mang }List; //kieu danh sach List
2. 空のリストを初期化します
私たちのリストが空の場合、リスト内の要素の数によって 0. だから中1のサイズを宣言 0 ある.
void Init(List *L) //ham khoi tao danh sach rong /*Danh sach L duoc khai bao kieu con tro de khi ra khoi ham no co the thay doi duoc*/ { (*L).size = 0; //size = 0. }
3. リストが空のチェック, 完全なリスト
リストを確認するには、空またはリストの要素の単なる外観の完全である 0 か否か (ホロー) とNによるか (フル).
int Isempty (List L) { return (L.size==0); } int Isfull (List L) { return (L.size==N); }
4. リスト内の位置kに要素を挿入します
リスト内の要素を挿入する前に、私たちが構築する必要があります 1 機能は、データを返す (入力データ) 要素は、それを挿入する.
item init_x() //khoi tao gia tri x { int temp; scanf("%d",&temp); return temp; }
[挿入に進みます:
挿入中、私たちは、リストがいっぱいになっているかどうかを確認する必要があります, 挿入し、それを確認する場所kを入力する, 適切な場合 (0<へ<N =) 挿入するように進みます.
リスト内の位置kにおける要素xを挿入するには (配列内の) 我々は必要とする 1 ループは、配列の最後の方に位置k個の要素から移動する, その後、位置kのxを挿入する. 最後に、サイズを増やす 1 ユニット.
int Insert_k (List *L, item x, int k)//chen x vao vi tri k { if (Isfull(*L)) //kiem tra danh sach day { printf("Danh sach day !"); return 0; } if (k<1 || k>(*L).size+1) //kiem tra dieu kien vi tri chen { printf("Vi tri chen khong hop le !\n"); return 0; } printf ("Nhap thong tin: "); x = init_x(); //gan x = ham khoi tao x int i; //di chuyen cac phan tu ve cuoi danh sach for (i = (*L).size; i >= k; i--) (*L).Elems[i] = (*L).Elems[i-1]; (*L).Elems[k-1]=x;//chen x vao vi tri k (*L).size++;//tang size len 1 don vi. return 1; }
5. リストを入力します
いつもの配列として入力してください
void Input (List *L) { int n; printf("Nhap so phan tu cua danh sach: "); scanf("%d",&(*L).size); int i; for (i=0; i<(*L).size; i++) { printf("Nhap phan tu thu %d : ",i+1); (*L).Elems[i] = init_x(); } }
6. リスト内の要素xを探す
xの値がその位置を与えられている場合、私はリストの最後を拾い読み.
int Search (List L, item x) { int i; for (i=0; i<L.size; i++) if (L.Elems[i] == x) return i+1; return 0; }
7. リストをクリアk番目の要素
一つはチェックする必要があります削除する前に、リストは空です. あなたが削除して検査する位置に流されない場合は (適切な場合は0<へ<N =).
私たちは、位置kに実行するためにforループを使用して, その後、前のk 1からの要素を置く 1 ユニット. しかし、我々はそれを使用する必要がある場合は、情報をご遠慮削除する前に削除された要素の値を保存する必要があります. 最後に、縮小サイズダウン 1 ユニット.
int Del_k (List *L, item *x, int k) { if (Isempty(*L)) { printf("Danh sach rong !"); return 0; } if (k<1 || k>(*L).size) { printf("Vi tri xoa khong hop le !"); return 0; } *x=(*L).Elems[k-1]; //luu lai gia tri cua phan tu can xoa int i; for (i=k-1; i<(*L).size-1; i++) //don cac phan tu ve truoc (*L).Elems[i]=(*L).Elems[i+1]; (*L).size--; //giam size return 1; }
8. リスト内の要素の含有量xを除去する
我々は、検索機能を使用する前に行っ要素xを見つけるリスト内の要素の含有量xを削除するには、次にx位置の値を返す, 私たちは見つける位置に要素を削除するには、関数del_kを継続して使用する.
int Del_x (List *L, item x) { if (Isempty(*L)) { printf("Danh sach rong !"); return 0; } int i = Search(*L,x); if (!i) { printf("Danh sach khong co %d",x); return 0; } do { Del_k(L,&x,i); i = Search(*L,x); } while (i); return 1; }
9. 完全なプログラム (フル)
#include<stdio.h> #include<stdlib.h> #define N 100 //so phan tu toi da la 100 typedef int item; /*kieu cac phan tu la item ma cu the o day item la kieu int */ typedef struct { item Elems[N]; //mang kieu item int size; //so phan tu toi da cua mang }List; //kieu danh sach List void Init(List *L); //ham khoi tao danh sach rong void Init(List *L); //ham khoi tao danh sach rong int Isempty (List L); //kiem tra danh sach rong int Isfull (List L); //kiem tra danh sach day int Insert_k (List *L, item x, int k); //chen x vao vi tri k void Input (List *L);//nhap danh sach void Output (List L);//xuat danh sach int Search (List L, item x); //tim phan tu x trong danh sach int Del_k (List *L, item *x, int k);//xoa phan tu tai vi tri k int Del_x(List *L, item x);//xoa phan tu x trong danh sach item init_x(); //tao phan tu x. //----------------------------------- void Init(List *L) //ham khoi tao danh sach rong /*Danh sach L duoc khai bao kieu con tro de khi ra khoi ham no co the thay doi duoc*/ { (*L).size = 0; //size = 0. } int Isempty (List L) { return (L.size==0); } int Isfull (List L) { return (L.size==N); } item init_x() //khoi tao gia tri x { int temp; scanf("%d",&temp); return temp; } int Insert_k (List *L, item x, int k)//chen x vao vi tri k { if (Isfull(*L)) //kiem tra danh sach day { printf("Danh sach day !"); return 0; } if (k<1 || k>(*L).size+1) //kiem tra dieu kien vi tri chen { printf("Vi tri chen khong hop le !\n"); return 0; } printf ("Nhap thong tin: "); x = init_x(); //gan x = ham khoi tao x int i; //di chuyen cac phan tu ve cuoi danh sach for (i = (*L).size; i >= k; i--) (*L).Elems[i] = (*L).Elems[i-1]; (*L).Elems[k-1]=x;//chen x vao vi tri k (*L).size++;//tang size len 1 don vi. return 1; } void Input (List *L) { int n; printf("Nhap so phan tu cua danh sach: "); scanf("%d",&(*L).size); int i; for (i=0; i<(*L).size; i++) { printf("Nhap phan tu thu %d : ",i+1); (*L).Elems[i] = init_x(); } } void Output (List L) { printf("Danh sach: \n"); int i; for (i=0; i<L.size; i++) printf("%5d",L.Elems[i]); printf("\n"); } int Search (List L, item x) { int i; for (i=0; i<L.size; i++) if (L.Elems[i] == x) return i+1; return 0; } int Del_k (List *L, item *x, int k) { if (Isempty(*L)) { printf("Danh sach rong !"); return 0; } if (k<1 || k>(*L).size) { printf("Vi tri xoa khong hop le !"); return 0; } *x=(*L).Elems[k-1]; //luu lai gia tri cua phan tu can xoa int i; for (i=k-1; i<(*L).size-1; i++) //don cac phan tu ve truoc (*L).Elems[i]=(*L).Elems[i+1]; (*L).size--; //giam size return 1; } int Del_x (List *L, item x) { if (Isempty(*L)) { printf("Danh sach rong !"); return 0; } int i = Search(*L,x); if (!i) { printf("Danh sach khong co %d",x); return 0; } do { Del_k(L,&x,i); i = Search(*L,x); } while (i); return 1; } int main() { List L; Init(&L); Input(&L); Output(L); int lua_chon; printf("Moi ban chon phep toan voi DS LKD:"); printf("\n1: Kiem tra DS rong"); printf("\n2: Do dai DS"); printf("\n3: Chen phan tu x vao vi tri k trong DS"); printf("\n4: Tim mot phan tu trong DS"); printf("\n5: Xoa phan tu tai vi tri k"); printf("\n6: XOa phan tu x trong DS"); printf("\n7: Thoat"); do { printf("\nBan chon: "); scanf("%d",&lua_chon); switch (lua_chon) { case 1: { if (Isempty(L)) printf("DS rong !"); else printf ("DS khong rong !"); break; } case 2: printf ("Do dai DS la: %d.",L.size);break; case 3: { item x; int k; printf ("Nhap vi tri can chen: "); scanf ("%d",&k); if (Insert_k(&L,x,k)) { printf ("DS sau khi chen:\n"); //xuat danh sach sau khi chen Output(L); } break; } case 4: { item x; printf ("Moi ban nhap vao phan tu can tim: "); scanf("%d",&x); int k=Search(L,x); if (k) printf ("Tim thay %d trong DS tai vi tri thu: %d",x,k); else printf ("Khong tim thay %d trong danh sach !",x); break; } case 5: { int k; item x; printf ("Nhap vi tri can xoa: "); scanf ("%d",&k); if (Del_k (&L,&x,k)) { printf ("DS sau khi xoa:\n"); Output(L); } break; } case 6: { item x; printf ("Nhap phan tu can xoa: "); scanf ("%d",&x); if (Del_x(&L,x)) { printf ("DS sau khi xoa:\n"); Output(L); } break; } case 7: break; } }while (lua_chon !=7); return 0; }
[ポストをRPS-含ま=”2703″ ショートコード=”偽”]
int型lua_chon;
printfの(“操作象DS LKDを選択してください:”);
printfの(“\N1: DS栄をチェック”);
printfの(“\N2: DAI DSを実行してください”);
printfの(“\N3: DSの場所に陳要素kのX”);
printfの(“\N4: DSの要素を探します”);
printfの(“\N5: 位置kでの摩擦要素”);
printfの(“\N6: DSの要素xを削除します。”);
printfの(“\N7: 終了”);
サイト N1: \N2: v.v…これは彼の星ということ. 私は印刷NI通常のコマンドのような場所を参照してください. それらはコマンドスイッチに置かれていますか…彼の場合はそう彼のDCをそれらを選ぶことができます( など: 子供たちはクリック 1 それはプリントアウト : DS栄をチェック . あなたは、押しても 2 それはプリントアウト : DAI DSを実行してください , v.v…. 彼が説明してくれました
それはちょうどだけでメニューをプリントアウトすることです, まだ見よスイッチケース以下の実装セクションを入力するための時間…
ct full die rồi a ơi gửi link mới giúp e
Bạn click vào sẽ hiện ra chương trình full nhé.
nhấp nó quay lại trang này ạ. ad giúp e
Bạn xem ở link này nhé: https://ideone.com/rvKBPr
新しい子供たちはCについて学び、私はまた、Eのtro.Aサブフォルダについてあまり理解していないというような声明を尋ねます (*L).L.sizeかなりの大きさや構文がどのようにAであり,なぜ間のドットがあります 2 先生変数?私たちは彼に答えを望みます,私はあなたの先生に感謝します.
のアクセスコンポーネントを表示するために、分散ドット 1 変数. 例sinhvien.tenは、その場所、あなたのsinhvienの名前を取得することです. 明確にオフラインになるべきであるあなたは、構造体のすべての種類を見て.
https://www.cachhoc.net/2014/12/19/lap-trinh-c-bai-11-kieu-cau-truc-struct/
Eは、それが彼の期待は、人々は彼の健康を望むhoi.Emより学習教材を持っているために、ウェブサイト上のポストを更新しているa.Hyました,私の質問に答えるためにあなたに感謝.
禁止のカム.
それはあなたが強制する権利はありませんする必要がありませんrootアカウントを実行しているアカウントとしてエラーを報告します. あなたはマシンをオフラインでアカウントを参照してください。.
構文: もし (isEmpty(*L)) ; もし (一杯(*L)) 星があります? 条件付きの使用であれば電子のアイデア, 例えば
もし(isEmpty(L) == 0) // このリストが空であることを知っています, 干し草の場合 (一杯(L) == N) 完全なリストについては、.
一方、両方の(で) 複数の電子はまた、どの条件もありませんが見つかりました >, <, !=,…. その後、whileループがときに終了することを理解する方法?
我々がテストし、実質的な条件を調べるとき 1 真または偽の命題. 例1 == 0はfalseです, Lが空の場合、同じことのisEmpty関数は正しい結果を返します。, スタックが空でない場合、間違いました.
より具体的ではありません ?
自然のテストでは、条件が真か偽であるかどうかを確認することです, すなわち真または偽, あなたは== bを書いたり、比較します 1 真偽を返す関数は、もしなければなりません. それが空の場合この場合、関数のisEmpty関数はtrueを返します, それが空でない場合はfalse. つまり、次いで.
のtypedef int型のアイテム;
/*キユウアイテムのリーフ要素
Oの日アイテムラのキユウint型のcuミリアンペア */
構造体のtypedef
{
アイテムElems[N]; //キユウアイテムを持って来ます
int型のサイズ; //持参する要素の最大数
}リスト; //リストスタイルリスト
宣言する必要はありません: のtypedef int型のアイテム;
我々は広告ではない構造体、常にDKに直接宣言ミリアンペア
構造体のtypedef
{
int型Elems[N];
int型のサイズ; //持参する要素の最大数
}リスト; //リストスタイルリスト,
そしてなぜこのlkhaiとしてプレス:
のtypedef int型のアイテム;
/*キユウアイテムのリーフ要素
Oの日アイテムラのキユウint型のcuミリアンペア */
構造体のtypedef
{
アイテムElems[N]; //キユウアイテムを持って来ます
int型のサイズ; //持参する要素の最大数
}リスト; //リストスタイルリスト
ああ、あなたはまあ, 他の種類は、ああ、あなた容易になるデータ項目のタイプに彼の交換、.
いくつかの広告に感謝
直接宣言することができます. 彼のその後彼を置き換えるために、簡単なスタイルのために分離.
cho e hỏi muốn viết sang c++ thì chỉ cần thay print và scanf là cout và cin đúng k ạ
Cũng có thể nói alf thế. 😉
ウェイター, em dùng VS 2015, khi chạy chương trình hoàn chỉnh thì nó báo lỗi “uninitialized local variable ‘x’ 中古” ラインで “もし (Insert…” trong case 3 đó anh, nhưng mình khai báo item x từ đầu case 3 rồi mà, vậy là sao anh ?
これはわからない. 決して使用しないでください. Linuxとdev-cの完全なコード
Aは私にifを説明します (Del_x(&L,X)) コンピュータがko先生になる方法を理解している場合
リストで削除されDel_x機能素子は、xの値L. それは、xが見つかった位置を返し、Xを削除します. 見つかったリターンは>場所を意味している場合 0. 見つからない場合はそれが返されます 0.
Cでは/ C ++ 0 間違っています, その他 0 正しいです. だからDel_x機能は、trueまたはfalseを返します.
もし(Del_x()) すなわち場合はtrue.
広告, エラーに広告コードのポストがメイン関数xが初期化されていないときに視覚的な電子のために使用される電子は尋ねました, eはアイテムxを作成しました; またはアイテム* X; その後、先生ではありません? E先生のためのモン広告ソリューション, どうもありがとう先生F
あなたはそれに値を代入されます 0 TRCは、ビューDJKを取っていません
はい, R直流あなたは先生を行います, おかげで非常にnhìuサー広告
ようこそ、. どのようにして、アレイ内で編集された彼の要素を追加したいです. あなただけにあなた自身を助けます
ありがとう
Isfull関数をコピーします(リストL) しかし、もう一度チェックするとIsfullです(*L) ?!?! eはないと彼は説明しました !?? ありがとう !!!1
これは、関数に渡されたとき、Lので 1 ポインタ (int型Insert_k (リストL *,…) Lは、カーソルの値を取得するために使用されるべきです. それは、L・アドレス・ポインタL書かれている場合
関数ポインタのLを使用して他の機能も先生なかった理由て検索Eへの親愛を尋ねました?
彼らは読み違えてはならないポインタについて学んでいます, 前方彼は先生を説明しました.
私は感謝します!
検索機能は、唯一の理由は、それが見つけたものを返します。, Lを変えません. 利用者は、ポインタLを変更したいとき.
私はC ++コードに移動したときに先生は私に尋ねました. 彼の中でのcin coutのを使用しないのはなぜ先生によってハム定義???? Eの#includeホイップ先生
名前空間stdを使用すると、STDを記述しない場合より多くを持っています::CIN, STD::COUT
クアンさん、質問してもいいですか?
現在の配列の最後の要素の直後に新しい要素を挿入する必要がある場合、この関数は位置kに要素を挿入します。この関数は使用できませんよね? ?
あまりにも持っています
ねえ、何か聞いてもいいですか?. “*” 価値のために, “&” 住所を取得するには. 次に、リスト* LとリストLとは何ですか, 説明してください
宣言されると、List * L-> LはList型のポインター変数です。.
リストを宣言する場合L->はリスト型の変数です.
神, 段落Del_k(L,&X,で);
i =検索(*L,X);
トラブル. そのまま削除してみませんか: Del_k(*L,&X,へ) 次に検索を追加します(L,X), xを検索して削除するだけです