linked list有關串連和創造總數的問題

就是老師要我們做Linked list的程式(限定用C)

可是我還是搞不懂要怎麼創造出一個

題目是說使用者輸入看要創造幾個node

然後要使用者輸入每個node的質

然後是用linked list把它串在一起

有大大能教我嗎??

先在此感謝了

Update:

calloc是什麼函式???

課本上只有說malloc

Update 2:

還是先謝謝大大囉

2 Answers

Rating
  • Mark
    Lv 5
    1 decade ago
    Favorite Answer

    一般link list的node大概是像以下的範例定義成structstruct node {struct node *next;int value;.......};或用typedef再定義一個型別typedef struct node {struct node *next;int value;..........} node_t, *node_p;使用時通常可以分成幾個動作: 配置節點, 插入節點, 刪除節點配置節點: 產生一個新的node, 並且初始化node的裏面的欄位node_p create_node(int value){   node_p new_node;      // 配置節點記憶體   new_node = (node_p)malloc(sizeof(node_t));      if (new_node != NULL)   {     // 初始化節點欄位     new_node->next = NULL;     new_node->value = value;   }   return new_node;}插入節點: 插入節點有可能是要插入linked list的最前面, 最後面, 或是其中某特定的節點後面/前面// linked list一般會用一個node_p資料型別的變數// 來指向linked list的第一個節點// 比如說, 一開始宣告 node_p head = NULL;// 表示linked list目前還沒有任何節點// 在以下的範例中, 我們需要傳入linked list的開頭// 如果linked list一開始還是空的時候// 插入一個節點必須將開頭指向新插入的節點// 因為必須變更head的值, 所以要用node_p *的型別void insert_tail(node_p *head, node_p new_node){  node_p cur_node;   // 如果linked list的開始是NULL, 表示目前沒有任何節點在裏面  // 直接將linked list的開頭指向新插入的節點  if (*head == NULL)  {    *head = new_node;  }   else  {    // 將目前的節點指向linked list的第一個節點    cur_node = *head;     // 如果還有下一個節點的話, 就前進到下個節點    // 一直前進到linked list的最後一個節點    while (cur_node->next != NULL)    { cur_node = cur_node->next; }      // 將最後一個節點的next欄位指向新插入的節點    cur_node->next = new_node;  }}使用方法大概如下  node_p head = NULL;node_p new_node;int value;while(...){  ......  new_node = create_node(value);  if (new_node)  { insert_tail(&head, new_node); }  .......}

  • 1 decade ago

    把node宣告為struct, 內含資料與指向下一個節點的指標

    用一個node*指向第一個節點

    node用動態產生的方式(calloc(..., ...))

    2006-01-14 18:04:03 補充:

    calloc與malloc都差不多...一個好像有初值...

    calloc(size_t nobj, size_t size);

    malloc(size_t size);

    2006-01-14 18:04:39 補充:

    我是小小...........

Still have questions? Get your answers by asking now.