為什麼要學習鍊錶?
鍊錶主要有以下幾大特性:
1、解決陣列無法儲存多種資料型別的問題。
2、解決陣列中,元素個數無法改變的限制(c99的變長陣列,c++也有變長陣列可以實現)。
3、陣列移動元素的過程中,要對元素進行大範圍的移動,很耗時間,效率也不高。
先來感性的認識一下鍊錶,我們先來認識下簡單的鍊錶:
從這幅圖我們得出以下資訊:
這個簡單鍊錶的構成:
頭指標(header),若干個節點(節點包括了資料域和指標域),最後乙個節點要指向空。
接下來看看鍊錶的資料結構:
struct list_node
;那麼如何來建立乙個鍊錶的乙個節點呢?
我們寫個程式演示一下:
#include
#include
#include
struct list_node
;typedef struct list_node list_single ;
int main(void)
memset(node,0,sizeof(list_single)); //3、清一下
node->data = 100 ; //4、給鍊錶節點的資料賦值
node->next = null ; //5、將鍊錶的指標域指向空
printf("%d\n",node->data);
free(node);
return 0 ;
}那麼,這僅僅只是建立乙個鍊錶中的乙個節點,為了好看,我們把建立節點封裝成函式,以後想建立多少個節點,我們就可以反覆呼叫乙個函式來建立,會很方便:
list_single *create_list_node(int data)
memset(node,0,sizeof(list_single));
node->data = 100 ;
node->next = null ;
return node ;
}接下來在程式上完成的程式:
#include
#include
#include
struct list_node
;typedef struct list_node list_single ;
list_single *create_list_node(int data)
memset(node,0,sizeof(list_single));
node->data = data;
node->next = null ;
return node ;
}int main(void)
執行結果 :
這樣我們就完成乙個鍊錶節點的建立了,那麼它現在的樣子如下圖:
鍊錶的結構裡,資料儲存了100,因為這個鍊錶只有乙個節點,所以它的指標域指向了null。
教你 新手 一步一步開始SEO
如果你從事seo工作已經有段時間了,你可能對如何來優化乙個網頁有種直覺。你可能是同時來做好幾件事,而不是執行一步一步的過程。但是如果你是正在學習seo,或者是試圖去理解seo們是怎麼來做你的網頁的,那就顯得有些難度了,尤其當你第一次接觸這個的時候。這篇文章旨在幫助seo初學者們更多的了解seo的過程...
一步一步教你寫pdf檔案
pdf作為一種跨平台的檔案格式,越來越受到使用者的歡迎。現在除了adobe官方提供的pdflib有很多第三方的庫可以實現pdf的檔案建立 修改 格式轉換。pdf文件採用的是二進位制和文字混排的方式。近期專案需要,對pdf檔案的結構做了一些研究。最終,領導決定採用第三方庫,沒能用得上。在此,跟大家分享...
一步一步教你寫DOTA外掛程式
好久木有研究dota了,整理篇小菜文章。首先,我們要提公升外掛程式本身程式許可權,使其能夠有許可權修改war3遊戲的記憶體。這個c 可以使用如下 void enabledebugpriv 提公升程式自身許可權 tkp.privilegecount 1 tkp.privileges 0 luid se...