?? cirlinklistm.cpp
字號:
//單循環(huán)鏈表的測試與應用cirlinklistm.cpp
#include<iomanip.h>
#include "cirlinklist.cpp"
void main()
{cout<<"cirlinklistm.cpp運行結果:\n";
int m=150,i,n=10,x,it;
cirlinklist p,t,q,mylink;
p.CreateCLinkL(n,m,1);
if(p.CListEmpty()) cout<<"單循環(huán)鏈表p空!\n";
else cout<<"單循環(huán)鏈表p非空!\n";
cout<<"單循環(huán)鏈表p(升序):\n";
p.TraverseCList();
if(p.CListEmpty()) cout<<"單循環(huán)鏈表p空!\n";
else cout<<"單循環(huán)鏈表p非空!\n";
if(p.EndCList()) cout<<"單循環(huán)鏈表p滿!\n";
else cout<<"單循環(huán)鏈表p非滿!\n";
cout<<"單循環(huán)鏈表t(無序):\n";
t.CreateCLinkL(n-2,m);
t.TraverseCList();
cout<<"單循環(huán)鏈表t的長度:"<<t.CListSize()<<endl;
cout<<"單循環(huán)鏈表q(降序):\n";
q.CreateCLinkL(n,m,-1);
q.TraverseCList();
cout<<"單循環(huán)鏈表q的長度:"<<q.CListSize()<<endl;
cout<<"鏈表q的第1個元素:"<<q.GetElem(1)<<endl;
cout<<"鏈表q的第1個元素地址:"<<q.Index(1)<<endl;
cout<<"鏈表q的第5個元素:"<<q.GetElem(5)<<endl;
cout<<"鏈表q的第5個元素地址:"<<q.Index(5)<<endl;
cout<<"鏈表q的第10個元素:"<<q.GetElem(10)<<endl;
cout<<"鏈表q的第10個元素地址:"<<q.Index(10)<<endl;
cout<<"鏈表q的curr->next所指元素地址:"<<q.Next()<<endl;
x=65;it=66;
if(q.FindCList(x)) cout<<x<<"查找成功!\n";
else cout<<x<<"查找不成功!\n";
if(q.UpdateCList(x,it)) cout<<x<<"更新成功!\n";
else cout<<x<<"更新不成功!\n";
cout<<"更新后單循環(huán)鏈表q:\n";
q.TraverseCList();
cout<<"插入后單循環(huán)鏈表q:\n";
it=100;q.InsertCList(it,1);
q.TraverseCList();
cout<<"插入后單循環(huán)鏈表q:\n";
it=101;q.InsertCList(it,5);
q.TraverseCList();
cout<<"插入后單循環(huán)鏈表q:\n";
it=102;q.InsertCList(it,12);
q.TraverseCList();
cout<<"插入后q表長:"<<q.CListSize()<<endl;
cout<<"第1個數:"<<q.DeleteCList(1)<<"刪除成功!\n";
cout<<"刪除后q表長:"<<q.CListSize()<<endl;
q.TraverseCList();
cout<<"第5個數:"<<q.DeleteCList(5)<<"刪除成功!\n";
cout<<"刪除后q表長:"<<q.CListSize()<<endl;
q.TraverseCList();
cout<<"第11個數:"<<q.DeleteCList(11)<<"刪除成功!\n";
cout<<"刪除后q表長:"<<q.CListSize()<<endl;
q.TraverseCList();
//求解約瑟夫(Josephus)問題
cout<<"輸入人數n:";cin>>n;
cout<<"輸入第次數m:";cin>>m;
for(i=0;i<n;i++) mylink.InsertCList(i+1,i);
cout<<"員工編號依次為:";
LNode *w=mylink.Reset();
while(!mylink.EndOCList())
{cout<<setw(3)<<w->data;
w=mylink.Next();}
cout<<endl;
cout<<"刪除次序依次為:\n";
mylink.Reset(-1);
for(i=0;i<n-1;i++)
{for(int j=0;j<m-1;j++)
{w=mylink.Next();
if(mylink.EndOCList()) w=mylink.Next();}
if(mylink.EndCList()) w=mylink.Next();
cout<<"刪除第"<<mylink.DeleteNext()<<"人\n";}
cout<<"最后剩下的是:第"<<mylink.GetElem(1)<<"個人\n";
cin.get();cin.get();}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -