//這一次補上鍊表的注釋,**是空閒的時候敲出來的,如果有錯,希望幫忙糾正
//部分給出了詳細說明,這裡只選取了基本操作,因為更複雜的鍊錶操作太繁瑣,這裡就不寫了
//如果有什麼不懂的地方,可以隨時詢問
#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的結點全部刪除。分別輸出建立的初始單鏈表和完成刪除後的單鏈表。輸入第一行輸入資...