今天我們來學習一波有關鍊錶的基本演算法。
#pragma once
#include#include#include#include// 值型別
typedef int datatype;
typedef struct slistnode slistnode;
// 初始化
void slistinit(slistnode **ppfirst)
void slistsetup(datatype data)
// 尾部插入
void slistpushback(slistnode** ppfirst, datatype data)
while(pnode->pnext!=null)
pnode->pnext=pnewnode;
free(pnewnode); //釋放。}
// 頭部插入
void slistpushfront(slistnode **ppfirst, datatype data)
else
free(pnewnode);
}// 尾部刪除
void slistpopback(slistnode **ppfirst)
pnode=*ppfirst;
while(pnode->pnext->pnext!=null) //這一步是為了找到倒數第二個數。將它的pnext賦值成null。
q=pnode->pnext;
pnode->pnext=null;
free(q);
}// 頭部刪除
void slistpopfront(slistnode **ppfirst)
// 給定結點插入,插入到結點前
void slistinsert(slistnode **ppfirst, slistnode *ppos, datatype data)
while(pnode->pnext!=ppos) //迴圈找到給定節點前的那個數。
pnode->pnext=pnewnode; //將它的pnext賦值成要插入的值。
free(pnewnode);}
// 給定結點刪除
void slisterase(slistnode **ppfirst, slistnode *ppos)
while(pnode->pnext!=ppos) //迴圈找到給定節點的上乙個數。
pnode->pnext=pnode->pnext->pnext; //pnode->pnext=ppos->pnext
free(ppos);
}// 按值查詢,返回第乙個找到的結點指標,如果沒找到,返回 null
slistnode *slistfind(slistnode *pfirst, datatype data)
} return null;
}// 按值刪除,只刪遇到的第乙個
void slistremove(slistnode **ppfirst, datatype data)
else
}// 按值刪除,刪除所有的
void slistremoveall(slistnode **ppfirst, datatype data)
else
} }}int slistsize(slistnode **ppfirst)//統計鍊錶中一共有多少個數
printf("the nnumber is %d\n",size); //輸出結果。
return 0;
}// 銷毀
void slistdestroy(slistnode **ppfirst)
*ppfirst=null;
}
以上就是我所編寫的演算法,其中可能有很多錯誤,希望大家給些意見。
問題 A 演算法2 8 2 11 鍊錶的基本操作
輸入資料只有一組,第一行有n 1個整數,第乙個整數是這行餘下的整數數目n,後面是n個整數。這一行整數是用來初始化列表的,並且輸入的順序與列表中的順序相反,也就是說如果列表中是1 2 3那麼輸入的順序是3 2 1。第二行有乙個整數m,代表下面還有m行。每行有乙個字串,字串是 get insert de...
鍊錶的基本操作
include include include include using namespace std struct listnode void initnode listnode node bool isempty listnode head void pushfront listnode hea...
鍊錶的基本操作
鍊錶操作是最基本的 必須掌握的知識點,最好滾瓜爛熟,透徹理解。工作時間短用的也不夠頻繁,還是總結一下比較好,以加強鞏固。1.單鏈表 結點形式 區分幾個概念 首節點 第乙個元素所在節點。頭指標 指向首節點的指標。頭結點 為了操作方便,在第乙個節點之前附設的乙個結點,此時指向頭結點的為頭指標。基本操作 ...