-1

誰でもこれを説明できますか?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

C言語で連結リストにデータを入力するためのコードです。コードは完全ではありませんが、目的には十分だと思います。基本的にこれらの行のコーディングを説明してください:

 temp=malloc(sizeof(struct node));

 temp->link = list;
 list=temp;.
4

4 に答える 4

9

malloc()メモリを割り当てるために使用されます - この場合は新しいノード用です。

コードで定義されたaddbeg()関数は、次のことを行います。

  1. 一時変数を定義しますx
  2. 新しいノードにスペースを割り当てます。
  3. 整数 ( %dcode to scanf) を入力し、 に格納しxます。
  4. x新しく割り当てられたノードのデータ フィールドに保存された値を格納します。
  5. 変数 ' list' が指すリストの古い「先頭」を、新しく割り当てられたノードにリンクとして格納します。
  6. 新しいノードを、変数 ' ' に格納されたリストの新しい先頭に設定しますlist

これは、整数のリンク リスト ( http://en.wikipedia.org/wiki/Linked_list )の非常に基本的な実装です。

于 2009-08-01T11:39:20.363 に答える
0

tempとlistは、mainで宣言されているため、addbegには表示されません。それらは、addbegに渡すか、mainの外部で宣言する必要があります(グローバル、yuck)。

于 2009-08-01T13:06:37.040 に答える
0

malloc は、新しいノードにスペースを割り当てます。

temp->link = list

list = temp

その新しいノードをリストの先頭にします。

于 2009-08-01T11:38:43.283 に答える
0

最初の行: リストの 1 つの追加ノードにメモリを割り当てます。

2 行目: この要素の後に継続として現在のリストを追加します。

3 行目: 現在の要素をリストの先頭にします。

于 2009-08-01T11:38:46.933 に答える