自主程式設計實現單鏈表

2021-08-04 02:28:23 字數 2969 閱讀 6155

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的

儲存單元

存放線性表中的

資料元素

。鍊錶中的資料是以結

點來表示的,每個結點的構成:元素(

資料元素

的映象) + 

指標(指示後繼元素儲存位置),元素就是儲存資料的儲存單 元,

指標就是連線每個結點的位址資料。

下面是實現單鏈表的程式設計**:

#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...