선형 표 의 순서 표 생 성, 초기 화, 찾기, 삭제, 삽입 과 통합

3365 단어
본 고 는 국가 우수 과정 인 겅 궈 화의 데이터 구 조 를 참고 하여 쓴 것 으로 책 에 있 는 몇 가지 문 제 를 발견 하고 간단 한 수정 을 하여 전체 절차 과정 을 보완 하 였 습 니 다. 부족 하면 댓 글로 지적 해 주 십시오!!
#include<iostream>
#include<cstdio>
using namespace std;
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef struct
{
	ElemType *elem;
	int last;
}SqList;
int  Locate(SqList *L, ElemType e)
{
	int i=0;        /*i      ,   0,           */
	while ((i<=L->last)&&(L->elem[i]!=e))/*     ,      e   ,           */
		i++;
	if  (i<=L->last)
		return(i+1);  /*     e   ,      */
	else
		return(-1);  /*    ,      */
}
/*    L  i             e。      n=L->last+1,
i         1≤i≤L->last+2  */
int  InsList(SqList *L,int i,ElemType e)
{
	int k;
	if((i<1) || (i>L->last+2)) /*            */
	{
		printf("    i    ");
		return(ERROR);
	}
	if(L->last>= MAXSIZE-1)
	{
		printf("       ");
		return(ERROR);
	}
	for(k=L->last;k>=i-1;k--)   /*          */
		L->elem[k+1]=L->elem[k];
	L->elem[i-1]=e;   /* C     , i       i-1*/
	L->last++;
	return(OK);
}
int  DelList(SqList *L,int i)
/*    L    i     。i      1≤i≤L.last+1 */
{
	int k;
	if((i<1)||(i>L->last+1))
	{
		printf("       !");
		return(ERROR);
	}
	for(k=i; k<=L->last; k++)
		L->elem[k-1] = L->elem[k];  /*          */
	
	L->last--;
	return(OK);
}
void print(SqList *L)
{
	int i;
	for(i=0;i<=L->last;i++)
		cout<<L->elem[i]<<"  ";
	cout<<endl;
}
void Init(SqList *L)
{
	L->elem=new ElemType[MAXSIZE];
	if(! L->elem) {  
		exit(0);  
	}  
	int n,i=0;
	cout<<"          "<<endl;
	cin>>n;
	while(i<n)
	{
		cin>>L->elem[i++];
	}
	L->last=i-1;
}
void merge(SqList *LA,  SqList *LB,  SqList *LC)
{
	int i,j,k;
	i=0;j=0;k=0;
	while(i<=LA->last&&j<=LB->last)
		if(LA->elem[i]<=LB->elem[j])
		{
			LC->elem[k]= LA->elem[i];
			i++; 
			k++;
		}
		else
		{
			LC->elem[k]=LB->elem[j];
			j++; 
			k++;
		}
		while(i<=LA->last)	/*  LA      ,   LA        LC*/
		{
			LC->elem[k]= LA->elem[i];
			i++; 
			k++;
		}
		while(j<=LB->last)  /*  LB      ,   LB        LC*/	
		{
			LC->elem[k]= LB->elem[j];
			j++; 
			k++;
		}
		LC->last=LA->last+LB->last+1;
		print(LC);
}
int main()
{
	SqList L,L1,L2;
	ElemType e;
	int i,t;
	cout<<"       :(1.   2.  3.  4.  )"<<endl;
	
	Init(&L);
	
	print(&L);
	/*	cout<<"           "<<endl;
	cin>>e;
	t=Locate(&L,e);
	if(t)
	cout<<" "<<t<<" !"<<endl;
	else
	cout<<"    !"<<endl;
	
	  cout<<"               "<<endl;
	  cin>>e>>i;
	  t=InsList(&L,i,e);
	  if(t)
	  {
	  cout<<"        "<<endl;
	  print(&L);
	  }
	  else
	cout<<"    !"<<endl;*/
	cout<<"              "<<endl;
	cin>>i;
	t=DelList(&L,i);
	if(t)
	{
		cout<<"        "<<endl;
		print(&L);
	}
	else
		cout<<"    !"<<endl;
	cout<<" L1、L2       :"<<endl;
	Init(&L1);
	Init(&L2);
	cout<<"L1,L2,L    :"<<endl;
	merge(&L1,&L2,&L);
	return 0;
}

좋은 웹페이지 즐겨찾기