顺序表的简单程序

第二次在机房上机实验《数据结构与算法》,尽管学的还是“皮毛”,但是能够写出来运行基本正确的程序还是比较兴奋的。

 

理论的研究和学习最终还是应该服务于实践的,也只要实践过才能够检验理论的正确!第一次通过学习算法来实现一些数组类:顺序表的创建、插入、删除、查找等

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星期三

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值