SeqList
?
?
//????工程名:SeqList
//????文件名:SeqList.h
//????功能:演示循序表的基本操作
//????依賴文件:SeqList.cpp,main.cpp
#ifndef?SeqList_H
#define?SeqList_H
const?int?MaxSize=100;
template?<class?T>
class?SeqList
...{
public:
????SeqList()...{length=0;}
????SeqList(T?a[],int?n);
????void?Insert(int?i,T?x);
????T?Delete(int?i);
????int?Locate(T?x);
????void?PrintList();
private:
????T?data[MaxSize];
????int?length;
};
#endif
?
//????工程名:SeqList
//????文件名:SeqList.cpp
//????功能:演示循序表的基本操作
//????依賴文件:SeqList.h,main.cpp
#include?"SeqList.h"
template?<class?T>
SeqList<T>::SeqList(T?a[],int?n)
...{
????if(n>MaxSize)throw?"參數(shù)非法";
????for(int?i=0;i<n;i++)
????????data[i]=a[i];
????length=n;
}
template<class?T>
void?SeqList<T>::Insert(int?i,T?x)????//Insert執(zhí)行有點(diǎn)問(wèn)題?已解決!
...{
????if(length>=MaxSize)throw?"上溢";
????if(i<1?||?i>length)?throw?"位置異常";????//原:i>length+1
????for(int?j=length;j>=i;j--)????//原:j>=i
????????data[j]=data[j-1];????//第j個(gè)元素存放在數(shù)組下標(biāo)為j-1處
????data[i-1]=x;????//或????data[j]=x;第i個(gè)元素排在下標(biāo)i-1處
????length++;
}
template<class?T>
T?SeqList<T>::Delete(int?i)
...{
????if(length==0)?throw?"下溢";
????if(i<1?||?i>length)throw?"位置異常";
????T?x=data[i-1];
????for(int?j=i;j<length;j++)
????????data[i-1]=data[i];
????length--;
????return?x;
}
template?<class?T>
int?SeqList<T>::Locate(T?x)
...{
????for(int?i=0;i<length;i++)
????????if(data[i]==x)return?i+1;????//下標(biāo)為i的元素等于x,返回其序號(hào)i+1
????????return?0;
}
template?<class?T>
void?SeqList<T>::PrintList()
...{
????for(int?i=0;i<length;i++)
????????cout<<data[i]<<endl;
}
?
//????工程名:main.cpp
//????文件名:SeqList
//????功能:演示循序表的基本操作
//????依賴文件:SeqList.h,SeqList.cpp
//主函數(shù)
#include?<iostream.h>
#include?"SeqList.cpp"
void?main()
...{
????int?r[]=...{1,2,3,4,5};
????SeqList<int>?a(r,5);
????cout<<"執(zhí)行插入操作前數(shù)據(jù)為:"<<endl;
????a.PrintList();
????try
????...{
????????a.Insert(2,6);????//原:3
????}
????catch(char?*s)
????...{
????????cout<<s<<endl;
????}
????cout<<"執(zhí)行插入操作后數(shù)據(jù)為:"<<endl;
????a.PrintList();????//Insert執(zhí)行有點(diǎn)問(wèn)題?
????cout<<"值為3的元素位置為:"<<endl;
????cout<<a.Locate(3)<<endl;
????cout<<"執(zhí)行刪除第一個(gè)元素操作,刪除前數(shù)據(jù)為:"<<endl;
????a.PrintList();
????try
????...{
????????a.Delete(1);
????}
????catch(char?*s)
????...{
????????cout<<s<<endl;
????}
????cout<<"刪除后數(shù)據(jù)為:"<<endl;
????a.PrintList();
}
?
總結(jié)
- 上一篇: 关于IFRAME的一些小应用
- 下一篇: 好累啊!