單鏈表是一種鏈式訪問的資料結構,用一組位址任意的
儲存單元
存放線性表中的
資料元素
。鍊錶中的資料是以結
點來表示的,每個結點的構成:元素(
資料元素
的映象) +
指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單 元,
指標就是連線每個結點的位址資料。
下面是實現單鏈表的程式設計**:
#include #include #define ok 0
#define error -1
#define malloc_error -2
typedef int datatype ;
typedef struct node
node ;
typedef node * pnode ; //重新命名結點指標型別
//頭插法建立鍊錶
int create_list_head(pnode * mynode ,datatype mydata)
//將新資料賦給新的結點
node->data = mydata ;
node ->next = *mynode;
*mynode = node ;
}//尾插法建立鍊錶
int create_list_tail(pnode * mynode,datatype mydata)
node->data = mydata ;
node->next = null ;
//將node加入到鍊錶最後,此處要考慮是否非空表
if(*mynode == null)
else
temp->next = node ; }
return ok ;
}//在第pos個節點處插入乙個資料
int insert_node(pnode *mynode,int npos,datatype mydata)
//非空表
if(temp == null && *mynode!=null)
//新建結點
pnode node = (pnode)malloc(sizeof(node)/sizeof(char)) ;
if(node == null)
node->data = mydata ;
//將結點插入到鍊錶中
if(*mynode == null || npos == 1) //插在表頭
else //插在表中或末尾
return ok ; }
//將第pos個結點刪除
int delete_node(pnode * mynode ,int npos)
pnode p = *mynode ;
int k =1 ;
while(p&&knext ;
k++ ; }
if(p == null||k>=npos-1)
pnode temp = p ;
if(npos == 1)
else
free(temp) ;
}//鍊錶逆序
int inverse_list(pnode * mynode)
pnode pre = *mynode ; // 當前結點的前乙個結點:初始化為指向第乙個結點的指標
pnode cur = pre->next ; // 當前結點:初始化為指向第二個結點的指標
pnode next = null ; // 用於儲存當前結點的下乙個結點指標
//將各個結點逆序
while(cur)
//處理頭指標和尾結點
(*mynode)->next = null ; // 原來的第乙個結點現在是最後乙個結點 要將其指標置空
*mynode = pre ; // 頭指標指向現在的第乙個結點也就是原來的最後乙個結點
return ok ;
}//查詢鍊錶中的元素,找到後返回該結點的指標
pnode search(pnode mynode,datatype mydata)
pnode temp = mynode ;
while(temp)
temp = temp->next ; }
return null ;
}//計算鍊錶中的長度
int len(pnode mynode)
return nlen ;
}//列印
void display(pnode mynode)
pnode temp = mynode ;
while(temp)
printf("\n") ;
}int main()
*/
// 尾插法建立鍊錶
if (create_list_tail(&node, i) != ok)
} display(node);
// 在第 pos 個結點處插入乙個資料
/* if(insert_node(&node, 1, 11) != ok)
display(node); */
// 將第 pos 個結點刪除
/* if(delete_node(&node, 1) != ok)
display(node); */
// 將鍊錶逆序
if(inverse_list(&node) != ok)
display(node);
// 查詢鍊錶中的元素,找到後返回改結點的指標
pnode p = search(node, 18);
if (p == null)
else
// 計算鍊錶的長度
int nlen = len(node);
printf ("len = %d\n", nlen);
return 0;
}
自主程式設計實現雜湊表
雜湊表是種資料結構,它可以提供快速的插入操作和查詢操作。雜湊表也有一些缺點它是基於陣列的,陣列建立 後難於擴充套件,某些雜湊表被基本填滿時,效能下降得非常嚴重。這個問題是雜湊表不可避免的,即衝突現象 對不同 的關鍵字可能得到同一雜湊位址。第一次接觸雜湊表時,它的優點多得讓人難以置信。不論雜湊表中有多...
自主程式設計實現二分法查詢
今天出去筆試,遇到一道題目讓我們用二分法查詢一已排好序的陣列中的資料,並返回該資料的位置,這 是我第一 次碰到使用二分法的程式設計題,一開始還是有點小慌得,畢竟之前沒有寫過,怕有些注意點沒法試卷中 檢測出來,不過二分法的概念還是很好理解的,主要思想是 設查詢的陣列區間為a front,end 1 確...
java語言自主程式設計模擬資料檔案
資料格式樣本為 2018 08 242 19 08 320,15219835179,重慶,小公尺,fri aug 31 09 01 43 cst 2018 但在資料中時間格式為2018 08 242 19 08 320 所以我們要更改時間的輸出格式 這需要使用 dateformat 類的format...