[C 언어] 데이터 구조 에서 선형 표 순서 표 의 기본 조작 (삭제 및 검사 및 합병)
#include 
#define MAXSIZE 20
typedef int Elemtype;
typedef struct Node{
	Elemtype data[MAXSIZE];
	int length;
}sqList;
//    
void initList(sqList *L)
{
	L->length=0;
		printf("OK
"); 
}
//     
void ListEmpty(sqList *L)
{
	if(L->length==0)
		printf("  
"); 
	else
		printf("   
"); 
}
//    
void clearList(sqList *L)
{
	L->length=0;	/*     Length     ,Length==0     ,     */
	printf("OK
"); 	
}
//    
int ListLength(sqList *L)	
{
	return L->length;
}
//  i    
void getElem(sqList *L,int i,Elemtype *e)	
{
	if(L->length==0||i<1||i>L->length)	//  L     i    
		return;
	*e=L->data[i-1];
	printf("OK
"); 
}
//         
int LocateElem(sqList *L,Elemtype e)	//      (    ),   int
{
	int i;
	if(L->length==0)
		return 0;
	for(i=0;ilength;i++)
		if(L->data[i]==e)
			return i+1;
	return 0;
}
//          
void insertList(sqList *L,int i,Elemtype e)
{
	int j;
	if(L->length==MAXSIZE)				//      
		return;
	if(i<1||i>L->length+1)				//  i    
		return;
	for(j=L->length-1;j>=i-1;j--)		//                  
		L->data[j+1]=L->data[j];
	L->data[i-1]=e;
	L->length++;
}
//          
void deleteList(sqList *L,int i,Elemtype *e)
{
	int j;
	if(L->length==MAXSIZE)				//      
		return;
	if(i<1||i>L->length)				//  i    
		return;
	*e=L->data[i-1];					//              
	for(j=i;jlength;j++)
		L->data[j-1]=L->data[j];
	L->length--;
	printf("OK
");
}
//   
void TraverseList(sqList *L)
{
	int i;
	if(L->length==0)
		printf("NULL
");
	else
	{
		for(i=0;ilength;i++)
			printf("%d ",L->data[i]);
		printf("
");
	}
}
//       (       ) 
void unionList(sqList *La,sqList *Lb,sqList *Lc)
{
	int i,j,flag;
	for (i = 0; i < La->length; i++)
		Lc->data[i] = La->data[i];
	Lc->length = La->length;
	flag = 0;
	for (i = 0; i < Lb->length && Lc->lengthlength && flag==0; j++)
		{
			if (La->data[j] == Lb->data[i] )
				flag=1;
		}
		if (flag == 1)
			continue;
		else
			Lc->data[Lc->length++] = Lb->data[i];
	}
}
void Del_in_range(sqList *L,int x,int y)
{//  x y     ,      O(n)
	int backStep=0;
	for(int i=0;ilength;i++)
	{
		if(L->data[i]>=x&&L->data[i]<=y)
		backStep++;
		else
		L->data[i-backStep]=L->data[i];
	}
	L->length=L->length-backStep;
}
int main()
{
	sqList La,Lb,Lc;
	int i,j,t,temp;Elemtype e; 
	initList(&Lb); 
	for(i=1;i<=5;i++)
		insertList(&Lb,i,i);
	while(i=getchar())
	{
		switch(i)
		{
			case '1':initList(&La);break;
			case '2':ListEmpty(&La);break;
			case '3':clearList(&La);break; 
			case '4':printf("       %d
",ListLength(&La));break;
			case '5':printf("             
");
				   scanf("%d %d",&t,&e);
				   insertList(&La,t,e);
				   break;
			case '6':printf("         ");
				   scanf("%d",&t);
				   deleteList(&La,t,&e);
				   break;
			case '7':printf("        
");
				   scanf("%d",&t);
				   getElem(&La,t,&e);
				   printf("%d",e);
				   break;
			case '8':unionList(&La,&Lb,&Lc);break; 
			case '9':TraverseList(&La);break;
			case '0':TraverseList(&Lc); break;
		}
	}
	return 0; 
}      이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.