序:
呼叫函式時,其實就是把變數的位址傳給函式,但是函式只能修改指標指向變數的值,不能修改指標的指向
如果需要修改指標的指向就必須在傳參時傳指標的指標!
比如:單鏈表在遍歷,查詢時就不需要改變指標指向,插入刪除就必須改變指標指向
為了保證**質量,我將所有的函式都使用指標的指標形式
先附上執行結果:
else //鍊錶不為空時,找到最後乙個再插入
pcur->_pnext = buyslistnode(data); }}
void slistpopback(pnode* phead)
else if (null == (*phead)->_pnext)//只有乙個節點
else//節點超過乙個
ptail->_pnext = null;
free(pcur);
pcur = null; }}
void slistpushfront(pnode* phead, datatype data)
void slistpopfront(pnode* phead)
else }
void slistinsert(pnode* phead, pnode pos, datatype data)//將值為data的節點插入pos的後面
else }
int slistempty(pnode* phead)
else }
int slistsize(pnode* phead, datatype data)//找到值為data的節點個數
while (pcur)
pcur = pcur->_pnext;
} return count;
}void slisterase(pnode* phead, pnode pos)
else }
pnode slistfind(pnode* phead, datatype data)
while (pcur) }
return null;
}void slistdestroy(pnode* phead)
else }
}test.c
#include"listnode.h"
int main()
資料結構 單鏈表基礎面試題 上
1 單鏈表的逆置 node reverse node s1 2 移除鍊錶的元素 輸入 1 2 6 3 4 5 6 val 6 輸出 1 2 3 4 5 node removeelements node head,int val else free cur cur next prev cur cur ...
資料結構之單鏈表(二)面試題
單鏈表的反轉 singlelinkedlistnode prev head.next singlelinkedlistnode pcur prev.next while prev.next null pcur是要操作的節點,prev是其前置節點,初始為prev為第乙個有效節點,pcur為第二個有效節...
單鏈表的反轉(資料結構 面試題)
編寫乙個演算法來顛倒乙個鍊錶,該鍊錶的第乙個結點由first指向。不要複製列表元素 而是重置鏈結和指標,使得first指向原來的最後乙個結點,並且結點之間的所有鏈結都反向。思路 因為題目中明確說明不能複製元素,所以通過複製來重置另外乙個鍊錶的想法被終止。我們想到,如果要改變連線的指向,又能夠要使鍊錶...