第二次在机房上机实验《数据结构与算法》,尽管学的还是“皮毛”,但是能够写出来运行基本正确的程序还是比较兴奋的。
理论的研究和学习最终还是应该服务于实践的,也只要实践过才能够检验理论的正确!第一次通过学习算法来实现一些数组类:顺序表的创建、插入、删除、查找等
code:
#include"iostream"
//#include"stdlib.h"
using namespace std;
typedef struct
{
int *p;
int length;
int size;
}SqList;
int intial(SqList &L)
{
L.p=(int *)malloc(10*sizeof(int));
if(!L.p)
return 0;
else
{
L.length=10;
L.size=10;
cout<<"请输入顺序表中的所有元素(10个):"<<endl;
for(int i=0;i<10;i++)
{
cin>>L.p[i];
}
cout<<"你所创建的顺序表是:"<<endl;
for(int k=0;k<10;k++)
{
cout<<L.p[k]<<" ";
}
}
return 1;
}
int Insert(SqList &L,int i,int e)
{
if(i<1||i>L.length+1)
return 0;
if(L.length>=L.size)
{
int * newbase=(int *)realloc(L.p,(L.size+1)*sizeof(int));
if(!newbase)
return 0;
L.p = newbase;
L.size+=1;
}
int *q = &(L.p[i-1]);
for(int *pt=&(L.p[L.size-1]);pt>=q;pt--)
*(pt+1) = *pt;
*q = e;
L.length=L.length+1;
return 1;
}
int Delete(SqList &L,int i,int &e)
{
if(i<1||i>L.length)
return 0;
int *p = &(L.p[i-1]);
e= *p;
int *q= &L.p[L.length-1];
for(p++;p<=q;p++)
*(p-1)=*p;
L.length=L.length-1;
return 1;
}
int search(SqList L,int i)
{
//if(i<1||i>L.length)
// return 0;
for(int k=0;k<L.length;k++)
if(L.p[k]==i)
{
cout<<L.p[k];
cout<<"您所查找的数是在顺序表的第 "<<k+1<<"个位置"<<endl;
return 1; break;
}
cout<<"您所查找的数字不存在顺序表中!!!"<<endl;
return 1;
}
int main()
{
int temp,m,n,g,s;
SqList L;
intial(L);
cout<<"原始的顺序表是:"<<endl;
for(int i=0;i<10;i++)
cout<<L.p[i]<<" ";
cout<<endl;
cout<<"请输入你所想插入的位置(1~10):"<<endl;
cin>>m;
cout<<"请输入你所插入的一个整数:"<<endl;
cin>>n;
Insert(L,m,n);
cout<<"插入元素后的顺序表是:"<<endl;
for(int j=0;j<11;j++)
cout<<L.p[j]<<" ";
cout<<endl;
cout<<"请输入你所想删除的位置:"<<endl;
cin>>g;
Delete(L, g,temp);
cout<<"删除顺序表一个元素之后为:"<<endl;
for(int k=0;k<10;k++)
cout<<L.p[k]<<" ";
cout<<endl<<"请输入一个您查找的值:";
cin>>s;
search( L, s);
return 0;
}//这个程序还是有很多的漏洞的,需要优化改正
感觉到算法的力量,数据结构的重要性!学习中…………
2011年9月21日 13:02:23星期三