線形テーブルのチェーンストレージ(2)

1.準備

まず、ストレージの構造を準備します(例として学生情報を取り上げます)

typedef struct //学生情報の構造体変数を作成します
{
charname [];
int age;
char num [];
} study;

typedef struct element//创建用于存储的结构体变量
{
stu info;
struct element* Next=NULL;
}ele;

int main()
{
he * start =(he **)malloc(100×sizeof(he))

0を返します。
}

2.追加、削除、変更、リリース(区別するために、*の代わりに〜を使用します)

1.要素を追加するには、次の手順を完了する必要があります
(1)リンクリスト内の位置を検索します
(2)要素を追加します
void Listadd(ele〜start、int n、ele〜ptr)// nは追加された位置です、ptrが必要です追加された要素
{
assert(n <100);
assert(start); ele〜p
= start;
while(p-> Next && n-)
{
p = p-> Next;
}
ptr-> Next =(p ->次へ)->次へ;
p-> Next = ptr;
}
2.要素の削除はそれに似ているので、繰り返しません。
3.要素を検索します
(1)要素の位置を検索します
(2)そのポインターを返します
ele〜Listfind(ele〜start、int n)
{ ele〜p
= start;
assert(p);
assert(n <100);
p = p-> Next;
while(p && n-)
{
p = p-> Next;
}
return p;
4.要素を変更する
(1)その位置にある要素を見つける
(2)変更する
void Listchange(ele〜start、int n、ele〜ptr)
{ ele〜p
= start;
assert(p);
assert(n <100);
while(p && n-)
{

        p=p->Next;
        }

        ptr->Next=p->Next;
        p->Next=ptr;

}
5.释放链表voidFreelist
ele〜start
{ ele〜p
= start;
assert(p);
ele〜tmp = NULL;
while(p-> Next)
{
tmp = p;
p = p->次へ;
free(p);
}
p = NULL;
}

3.前回の記事の冒頭で尋ねられた質問について説明します

2つの配列のすべての要素を降順で大きな配列に配置すること
は難しくありませんが、スペースを節約したい場合は、リンクリストを使用することをお勧めします。

線形テーブルのチェーンストレージ(2)
図に示すように、最初に2つの配列を大きいものから小さいものの順に並べ、次にpとqのポインターが指す要素のサイズを比較し、小さい方の要素へのポインターに1つ追加してから比較します。最初の比較では大きい方の要素が保存され、後続の比較では、各比較で大きい方の要素のアドレスが、前の比較で大きい方の要素のポインタフィールドに格納されます。

おすすめ

転載: blog.51cto.com/14961637/2657485