2016-02-05 37 views
-4

我有一個要求來創建M大小的鏈接列表,並且每個節點都包含B大小。我已經附加了鏈接列表和加載的圖像,以及它的元素是什麼。鏈表的要求與創建節點和特定要求的鏈接列表卡住

結構:

enter image description here

可以有一個人能告訴我,應該怎樣進行格式化,以滿足這一要求的節點。

+0

[固定寬度整數類型](http://en.cppreference.com/w/c/types/integer)可能會有所幫助,因爲了解數組。你一般知道鏈接列表? –

+0

那麼,一個'Node *',兩個'uint32_t's,一個'uint8_t [B-16]'? – molbdnilo

+0

@JoachimPileborg耶我知道一般鏈接列表。 –

回答

0

我不是我理解你的帖子100%,但根據我的理解和猜測, 我得到以下的東西。

1. Element head is 8bit, so which means linked list should be within 256 elements. 
2. Element ValueLen is 4bit, which means you Value should be less then 16 bit 

所以我定義了一個結構

struct Node { 
    unsigned int NextPtr:8; 
    unsigned int Key:4; 
    unsigned int ValueLen:4; 
    unsigned int Value:16; 
}; 

其中只有4字節爲(32位)和你的整個鏈表應該是

typedef Node LinkedList[256]; 

總1K字節。

+0

節點部分現在有點清楚,但這裏有2個函數 Init(int M,int b) - 最初通過調用庫函數malloc()來獲得M字節的內存並初始化鏈表 Insert(int x ,char * value_ptr,int value_len) - 在鍵是一個整數x的情況下插入一個鍵值對,該值是由value_len長度的指針value_ptr指向的一些數據。您應該使用庫memcpy()函數來複制值而不是僅複製指針。每個插入應消耗MP中的b字節 如何使用M和B字節創建動態節點。 M和B顯示在圖片 –

+0

'NextPtr'實際上不是一個指針,它是你的數組的索引。 'NextPtr'具有大小限制(僅8位)。所以一個數組可以解決這個問題,你不需要malloc。 – 0xFFFFFFFF