質問
これについて説明してもらえますか?
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));
and
temp->link = list;
list=temp;.
解決
malloc()
は、メモリを割り当てるために使用されます。この場合、新しいノード用です。
コードで定義されている addbeg()
関数は次のことを行います。
- 一時変数
x
を定義します。 - 新しいノードにスペースを割り当てます。
- 整数(
%d
コードをscanf
に入力)を入力してx
に保存します。 - 新しく割り当てられたノードのデータフィールドの
x
に保存された値を格納します。 - 古い" head"を保存します新しく割り当てられたノード内のリンクとして変数「
list
」が指すリストの。 - 変数「
list
」に保存されているリストの新しいヘッドに新しいノードを設定します。
リンクリストの非常に基本的な実装です( http://en.wikipedia.org/wiki / Linked_list )整数。
他のヒント
最初の行:リストの単一の追加ノードにメモリを割り当てます。
2行目:現在のリストをこの要素の後の継続として添付します。
3行目:現在の要素をリストの先頭にします。
tempおよびlistは、mainで宣言されているため、addbegには表示されません。これらは、addbegに渡すか、メイン(グローバル、yuck)の外部で宣言する必要があります。
mallocは、新しいノードにスペースを割り当てます。
temp->link = list
and
list = temp
その新しいノードをリストの先頭にします。
所属していません StackOverflow