天天看點

順序表的簡單程式code:

第二次在機房上機實驗《資料結構與算法》,盡管學的還是“皮毛”,但是能夠寫出來運作基本正确的程式還是比較興奮的。

理論的研究和學習最終還是應該服務于實踐的,也隻要實踐過才能夠檢驗理論的正确!第一次通過學習算法來實作一些數組類:順序表的建立、插入、删除、查找等

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

繼續閱讀