單鏈表操作

2021-06-27 13:51:38 字數 1653 閱讀 5897

//這一次補上鍊表的注釋,**是空閒的時候敲出來的,如果有錯,希望幫忙糾正

//部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了

//如果有什麼不懂的地方,可以隨時詢問

#include using namespace std;

typedef int elemtype;

struct node

;void init(node **l) //主函式裡面定義node型指標變數plist,儲存單鏈表的頭指標

//初始化函式形參要給二級指標,相應的主函式裡面實參則是對頭指標的引用

void clear_list(node *head) //清空函式

while(head->next!=null)

cout<<"鍊錶已經清空!\n";

}//加乙個標記,移動頭指標後賦值flag儲存下乙個位置,然後刪除當前節點

node *creat_list(node *head) //賦值函式

//coutreturn head;

}//讀入鍊錶元素,在while迴圈裡面每次將當前指標儲存下來,然後不斷向後更新

void list_length(node *head)

cout<<"鍊錶長度length: "if(head==null)

cout<<"鍊錶為空!\n";

else

cout} if(jdata;

}//給定的下標index,只需遍歷鍊錶,當節點數符合要求時即可

int locate_elem(node *head,elemtype _first) //給定節點元素,求第乙個下標(也可以擴充套件求多個點的下標)

cout<<"單鏈表裡不存在這個元素!\n";

}//同理,遍歷查詢出給定元素,然後直接返回下標

bool insert_elem(node *head,elemtype insert_elem,int index)

int i=1;

while(head!=null) }

return false;

}//插入步驟稍微多些,要另外定義兩個指標,思路就是遍歷到給定下標的前乙個下標,同時指標q記錄下位置

bool delete_node(node *head,int index)

while(head!=null) }

return false;

}//操作類似於插入,不多說

bool change_node_elem(node *head,int index,elemtype example3)

while(head!=null) }

return false;

}//也是遍歷鍊錶找到給定位置,然後更新資料

int main()

{ //node *plist=null;

node *plist;

elemtype example1=5,example2=7,example3=9;

cout<<"建立乙個單鏈表(plist):\n";

init(&plist); //初始化

plist=creat_list(plist); //建立單鏈表,給單鏈表賦值,返回頭指標

cout<<"列印原始鍊錶:\n";

out_list(plist);

cout<

單鏈表操作

include include typedef struct node tag node 建立不帶頭結點的單鏈表 node createnode else p q scanf d n 函式體結束,q指標變數被釋放,不能通過head引數帶回到呼叫函式 要把head帶回到呼叫函式,要把它定義為指向指標的...

單鏈表操作

include stdio.h include malloc.h include define n 10 代表要處理的元素個數 可以誰使用者的意思修改 define ok 1 define overflow 0 typedef int elemtype typedef int status type...

單鏈表操作

資料結構上機測試 2 1 單鏈表操作 atimelimit 1000ms memory limit 4096k 題目描述輸入n 個整數,先按照資料輸入的順序建立乙個帶頭結點的單鏈表,再輸入乙個資料 m,將單鏈表中的值為 m的結點全部刪除。分別輸出建立的初始單鏈表和完成刪除後的單鏈表。輸入第一行輸入資...