-1

基本的に、配列はユーザ​​ー入力で初期化する必要があります。の場合input = 3、この配列はそれぞれ 1 つのリンクされたリストをインデックスに格納できることを意味します0,1,2(つまり、合計 3 つのリスト)

int input = 3;
list* array[n]//not allowed as n is not constant, also not in heap so can't pass it across functions
list* array[] = (list*) malloc(sizeof(list)*input)//compiler error

面接の準備…ということで宿題!

4

3 に答える 3

1

リンク リストの配列は、ヘッド ノードの配列 (標準のリンク リストの実装を想定) またはリストへのポインターの配列のいずれかです。どちらの場合でも、直面しているように見える問題は、配列を動的に割り当てる方法です。

ヒープに配列を動的に割り当てる一般的な構文は次のとおりです。

type * array = calloc(number_of_elements, sizeof(type))

コード内のコンパイル エラーを修正すると、次のようになります。

int input = 3;
list ** array = calloc(input, sizeof(list*));

これはあなたが探しているものですか?

于 2012-04-19T10:35:01.730 に答える
0

である必要がありlist* array = malloc(sizeof(list) * input)malloc新しく割り当てられたメモリ位置のベース アドレスを返します。これを配列として使用できます。つまり、にアクセスできますarray[0]..array[input - 1]

于 2012-04-18T06:58:35.923 に答える
0

(単一の) リンク リストは、多くの場合、次の構造へのポインタを持つ構造です。このパターンにより、そのリストからの追加、削除、および挿入が簡単になり、実行時に全体のデータ使用を柔軟に管理できます。

あなたの状況でのリンクされたリストは次のようになります

struct List
{
 // contents of the list
 List* Pointer_to_next_list;
};

次に、各リストを追跡するための関数を追加できます。これがどのように機能するかについては、 Wikipedia::Linked Listを読むことをお勧めします。

于 2012-04-18T10:05:47.130 に答える