C C 整理 單向列表

2021-09-12 22:34:04 字數 2086 閱讀 3141

1:概念:

單向鍊錶是鍊錶的一種,其特點是鍊錶的鏈結方向是單向的,對鍊錶的訪問要通過順序讀取從頭部開始。鍊錶是使用指 針進行構造的列表,並且是由乙個個結點組裝起來的,因此又稱為結點列表。其中每個結點都有指標成員變數指向列表中的下乙個結點,head指標指向第乙個結點稱為表頭,而終止於最後乙個指向null的指標。

2:圖示

3:**示例

#define _crt_secure_no_warnings

#include#include#include/*帶有頭節點的單向鍊錶*/

typedef struct node

node;

/*建立頭節點*/

node * createlist()

head->id = -1;

head->next = null;

node * pcur = head;

node * pnew = null;

int data;

while (1)

//新節點動態分配記憶體空間

pnew = (node *)malloc(sizeof(node));

if (pnew==null)

//新節點成員變數賦值

pnew->id = data;

//pnew->next = null;

//鍊錶建立關係

pcur->next = pnew; //當前節點的next指向pnew

pnew->next = null; //pnew的下乙個節點指向null

pcur = pnew; //把pcur的位置移動到pnew

} return head;

}//在值為x的結點前,插入值為y的結點;若值為x的結點不存在,則插在表尾。

int insertlist(node *head,int x,int y)

node *ppre = head;

node *pcur = head->next;

while (pcur != null)

ppre = pcur; //ppre指向pcur位置

pcur = pcur->next; //pcur指向下乙個結點

} /*2種情況

*1. 找匹配的結點,pcur為匹配結點,ppre為pcur上乙個結點

*2. 沒有找到匹配結點,pcur為空結點,ppre為最後乙個結點

*/ node *pnew = (node *)malloc(sizeof(node));

if (pnew == null)

pnew->id = y;

pnew->next = null;

ppre->next = pnew; //ppre下乙個指向pnew

pnew->next = pcur; //pnew下乙個指向pcur

return 0;

}/*刪除給定值的節點*/

int deletelist(node *head, int x)

node *ppre = head;

node *pcur = head->next;

while (pcur != null)

ppre = pcur;

pcur = pcur->next;

} return 0;

}/*清空鍊錶*/

int destroylist(node *head)

node *tmp = null;

int i = 0;

while (head != null)

printf("i=%d\n", i);

return 0;

}/*鍊錶遍歷*/

int printlist(node *head)

node *pcur = head->next;

printf("head->");

while (pcur != null)

printf("null\n");

return 0;

}int main()

Josephu問題 單向環形列表

josephu問題 設編號為1,2,n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。根據問題的描述,我們可以使用乙個沒有頭節點的單向環形鍊錶來實現解決這個jo...

資料整理 C C

1.vs 找bug找了一晚上,終於給找到了,竟然是vs2010更新了乙個設定項弄的。vs2008只需要在專案 專案依賴項裡設定好依賴關係,生成時就會自動鏈結依賴項的輸出檔案。比如解決方案裡有兩個專案,乙個exe專案,乙個lib專案,如果設定exe專案依賴lib專案,則在生成exe專案時就會自動鏈結l...

HashMap學習 單向列表轉化為雙向列表

一 概覽 hashmap的某個桶位如果儲存的是單向列表,當向這個桶位繼續插入乙個元素的時候,這個桶位元素的數量超過 8時,單項列表會轉化為紅黑樹 同時是乙個雙向列表,jdk1.8之後 且會先轉化為雙向列表 二 轉化過程 1,執行如下程式,使map底層陣列的某個桶位的單向列表 開始 轉化為紅黑樹 按道...