软件技术基础上机实验习题一、顺序表
基础编程:
(1)编程实现线性表插入、删除
#include
template
class sq_LList
{ private:
int mm;
int nn;
T *v;
public:
sq_LList(){ mm=0;nn=0;return;}
sq_LList(int m)
{mm=m;
v=new T[mm];
nn=0;
return;
}
void prt_sq_LList()
{int i;
cout<<"nn="< for(i=0;i cout< return; } int flag_sq_LList() { if(nn==mm)return(-1); if(nn==0) return (0); return(1); } void ins_sq_LList(int i,T b) {int k; if(nn==mm) cout<<"overflow"< if(i>nn) i=nn+1; if(i<1) i=1; for(k==nn;k>=i;k--) v[k]=v[k-1]; v[i-1]=b; nn=nn+1; return; } void del_sq_LList(int i) {int k; if(nn==0) {cout<<"underflow"< return; } if((i<1)||(i>nn)) {cout<<"Not this element in the list!"< return; } for(k=i;k v[k-1]=v[k]; nn=nn-1; return; } }; int main() {sq_LList cout<<"第一个输出的顺序表对象s1:"< s1.ins_sq_LList(0,1.5); s1.ins_sq_LList(1,2.5); s1.ins_sq_LList(4,3.5); cout<<"第二个输出的顺序表对象s1:"< s1.del_sq_LList(0); s1.del_sq_LList(2); cout<<"第三个输出的顺序表对象s1:"< return 0; } 应用: (1)采用顺序表存储。 #include typedef int maxix[100]; main() {maxix a; int count,d,i,m,n; do { printf("输入n和m:"); scanf("%d,%d",&n,&m); } while(n<=m); for(i=0;i a[i]=i+1; count=0;d=0; while(d for(i=0;i if(a[i]!=0) { count++; if(count==m) { printf("%d",a[i]); a[i]=0; count=0; d++; } } } (2)约瑟夫问题用单链表实现: #include struct monkey { int number; monkey *prev; monkey *next; }; void main() { int n,m; cout<<"请输入猴子的数量"< cin>>n;