雜湊表頭插法和尾插法

2021-10-12 06:55:49 字數 1935 閱讀 8423

頭插法

int  harsh_table_insert_node(const char * skey, int nvalue) 

memset(pnewnode, 0, sizeof(harshnode)); //初始化新節點

pnewnode->skey = (char *) malloc(strlen(skey) + 1); //申請一塊skey大小的記憶體

if (null == pnewnode->skey)

memset(pnewnode->skey, 0, strlen(skey) + 1);

strcpy(pnewnode->skey, skey); //將skey的內容賦給 pnewnode -> skey

pnewnode->nvalue = nvalue; //鍵值也複製過來

pnewnode->pnext = null;

if ((g_harsh_table_size >= harsh_table_max_size) || (null == skey))//分配位址

return -1;

pos = harsh_table_harsh_string(skey) % harsh_table_max_size; //用這種方法計算skey在雜湊陣列中對應的位置

pharshnodehead = harshtable[pos]; //得到對應位置陣列頭節點

if (null == pharshnodehead)

else

g_harsh_table_size ++;

return 0;

}

尾插法稍微有一點複雜

int harsh_table_insert_node(const char * skey, int nvalue) 

memset(pnewnode, 0, sizeof(harshnode));

pnewnode->skey = (char *) malloc(strlen(skey) + 1); //申請一塊skey大小的記憶體

if (null == pnewnode->skey)

memset(pnewnode->skey, 0, strlen(skey) + 1);

strcpy(pnewnode->skey, skey); //將skey的內容賦給 pnewnode -> skey

pnewnode->nvalue = nvalue; //鍵值也複製過來

pnewnode->pnext = null;

if ((g_harsh_table_size >= harsh_table_max_size) || (null == skey))//分配位址

return -1;

pos = harsh_table_harsh_string(skey) % harsh_table_max_size; //用這種方法計算skey在雜湊陣列中對應的位置

pharshnodehead = harshtable[pos];

if (null == pharshnodehead)

else

node = pharshnodehead; //儲存這個不是null的節點位址,最後連線用

pharshnodehead = pharshnodehead->pnext; //向後移動,肯定會有null的時候

}//這時,已經到了最後乙個位址為null的節點

pharshnodehead = (harshnode *) malloc(sizeof(harshnode)); //分配空間

pharshnodehead = pnewnode; //賦值

node->pnext = pharshnodehead; //這一步很重要,將新節點與原鍊錶連線

}g_harsh_table_size ++;

return 0;

}

單鏈表頭插法尾插法

標頭檔案如下 ifndef linklist h define linklist h define success 10000 define failure 10001 define size 10 typedef int element struct node typedef struct nod...

C C 鏈 表 頭插法 尾插法

include stdafx.h include iostream using namespace std struct node node phead null 一開始沒有節點 先設定乙個空節點作為頭節點 此頭節點 資料data null,next null void addhead int d ...

建立單鏈表 頭插法 和 尾插法

因為markdown編譯能力有限 暫時上吧,我覺得也挺方便的 又在為自己菜找藉口了 我看著自己畫的圖就把 敲出來了,不算難。注意 實現了鏈棧的入棧之後,我發現這張圖畫的不是特別準確,表頭是不動的,一直是在表頭與第乙個節點之間插入新的節點!上 include includeusing namespac...