資源簡介
一:
內容:1、設線性表存放在向量A[arrsize]的前elenum個分量中,且遞增有序。試設計一算法,將x插入到線性表的適當位置上,以保持線性表的有序性。
2、用向量作存儲結構,試設計一個算法,僅用一個輔助結點,實現將線性表中的結點循環右移k位的運算。
3、用向量作存儲結構,試設計一個算法,僅用一個輔助結點,實現將線性表逆置的運算。
要求:了解線性表的邏輯結構特征,熟練掌握線性表的順序存儲結構的描述方法,及在其上實現各種基本運算的方法。
二:內容:1、已知帶頭結點的動態單鏈表L中的結點是按整數值遞增排序的,試寫一算法將值為x的結點插入到表L中,使L仍然有序。
2、設計一算法,逆置帶頭結點的動態鏈表L。要求利用原表的結點空間,并要求用盡可能少的時間完成。
3、假設有兩個按元素值遞增有序的線性表A和B,均以單鏈表作存儲結構,試編寫算法將A表和B表歸并成一個按元素值遞減有序的線性表C,并要求利用原表的空間存放C。
要求:熟練掌握線性表的單鏈式鏈接存儲結構及在其上實現線性表的各種基本運算的方法。
三:內容:1、假設在長度大于1的單循環鏈表中,既無頭結點也無頭指針。s為指向某個結點的指針,試編寫算法刪除結點*s的直接前驅結點。
2、已知由單鏈表表示的線性表中,含有三類字符的數據元素(如:字母、數字和其它字符),設計算法構造三個以循環鏈表示的線性表,使每一個表中只含同一類的字符,且利用原表中的結點空間作為這三個表的空間。(頭結點可以另辟空間)
3、有一雙鏈表,每個結點中除有prior、data和next域外,還有一訪問頻度域freq,在鏈表被啟用前,其值均初始化為零。每當在鏈表上進行一次LOCATE(L,x)運算,元素值為x的結點中freq域的值增1,并使此鏈表中結點保持按freq遞減的順序排列,以便使頻繁訪問的結點總是靠近表頭。設計滿足上述要求的LOCATE算法。
要求:熟練掌握線性表的循環鏈式和雙鏈式鏈接存儲結構及在其上實現線性表的各種基本運算的方法。
四:內容:1、設單鏈表中存放著n個字符,設計算法,判斷該字符串中是否有中心對稱關系。例如:xyzzyx、xyzyx都算是中心對稱的字符串。
2、設計算法判斷一個算術表達式的圓括號是否配對。(提示:對表達式進行掃描,遇‘(’進棧,遇‘)’退掉棧頂的‘(’,表達式被掃描完畢,棧為空)
3、假設以帶頭結點的循環鏈表表示隊列,并只設一個指針指向隊尾,編寫相應的置隊空、入隊和出隊算法。
要求:掌握棧和隊列的數據結構的特點;熟練掌握在兩種存儲結構上實現棧和隊列的基本運算;學會利用棧和隊列解決一些實際問題。
五:內容:1、若X和Y是用結點大小為1的單鏈表表示的串,設計算法找出X中第一個不在Y中出現的字符。
2、設計一算法,在順序串上實現串的比較運算strcmp(S,T)。
3、若S和T是用結點大小為1的單鏈表存儲的兩個串,設計算法將S中首次與T匹配的子串逆置。
要求:熟練掌握串的順序和鏈接存儲結構的實現方法;熟練掌握在兩種存儲結構上實現串的各種運算。
六:內容:1、以二叉鏈表作存儲結構,設計求二叉樹高度的算法。
2、一棵n個結點的完全二叉樹用向量作存儲結構,用非遞歸算法實現對該二叉樹進行前序遍歷。
3、以二叉鏈表作存儲結構,編寫非遞歸的前序、中序、后序遍歷算法。
要求:熟悉二叉樹的各種存儲結構的特點及適用范圍;掌握建立二叉樹的存儲結構的方法;熟練掌握二叉樹的前序、中序、后序遍歷的遞歸及非遞歸算法;靈活運用遞歸的遍歷算法實現二叉樹的其它各種運算。

代碼片段和文件信息
#include
#include
using?namespace?std;
#define?Ls?100
#define?Lis?10
typedef?struct?
{
int?*elem;
int?length;
int?listsize;
}Sqlist;
void?Initilist(Sqlist&lint?n)
{??
int?*newbase;
l.elem=(int?*)malloc(Ls*sizeof(int));
if(!l.elem)
{
cout<<“overflow“;
return;
}
l.length=n+1;
l.listsize=Ls;
if(l.length>=l.listsize)
{
newbase=(int*)malloc((l.listsize+Lis)*sizeof(int));
l.elem=newbase;
l.listsize+=Lis;
}
//++l.length?;
for(int?k=0;k {
cin>>l.elem[k];
}
}
void?Initilist(Sqlist&lint?nint?e)
{
int?kjtz;
for(int?s=0;s for(k=0;k if(l.elem[k]>l.elem?[k+1])
{
t=l.elem[k];
l.elem?[k]=l.elem[k+1];
l.elem?[k+1]=t;
}?
z=l.length-1;
for(j=0;j if(e<=l.elem?[j])
{ for(;z>j;z--)
l.elem[z]=l.elem[z-1];
l.elem[j]=e;
break;
}
if(j>=z)
l.elem?[j]=e;
++l.length?;?
}
void?main()
{
int?inm;
Sqlist?a;
cout<<“請輸入元素個數“< cin>>n;
cout<<“請輸入元素“< Initilist(an);
cout<<“請輸入插入元素“< cin>>m;
Initilist(anm);
for(i=0;i cout<
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-12-26?21:47??《數據結構與算法》實驗教學大綱程序代碼\
?????文件????????1210??2012-11-26?19:46??《數據結構與算法》實驗教學大綱程序代碼\1.0.cpp
?????文件?????????832??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\1.1.cpp
?????文件?????????827??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\1.2.cpp
?????文件?????????982??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\2.0.cpp
?????文件?????????854??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\2.1.cpp
?????文件????????1808??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\2.2.cpp
?????文件?????????821??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\3.0.cpp
?????文件????????1417??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\3.1.cpp
?????文件????????1756??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\3.2.cpp
?????文件????????1322??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\4.0.cpp
?????文件?????????709??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\4.1.cpp
?????文件????????1220??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\4.2.cpp
?????文件????????1425??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\5.0.cpp
?????文件?????????557??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\5.1.cpp
?????文件????????2320??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\5.2.cpp
?????文件?????????535??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\6.0.cpp
?????文件?????????816??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\6.2.cpp
?????文件????????1044??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\6.2.plg
?????文件????????1528??2012-11-12?17:42??《數據結構與算法》實驗教學大綱程序代碼\6.3.cpp
- 上一篇:哈夫曼編碼/譯碼器數據結構課程設計
- 下一篇:FCM用于圖像分割
評論
共有 條評論