선형 표 의 순서 저장 --- 순서 표
16892 단어 데이터 구조
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE]; //
int length; //
}SeqList;
3 주 순서 표 의 초기 화 순 서 는 빈 표를 만 드 는 것 으로 표 의 길 이 를 0 으로 설정 하여 데 이 터 를 저장 하지 않 았 음 을 나타 낸다 (0 번 단원 은 저장 하지 않 음).
SeqList *Init_SeqList()
{
SeqList *L = (SeqList *)malloc(sizeof(SeqList));
L->length = 0;
return L;
}
4 주 순서 표 의 삽입 순서 표 의 삽입 은 표 의 i 번 째 위치 에 새로운 요소 x 를 삽입 하고 삽입 한 후에 표 의 길이 와 1 을 추가 하 는 것 을 말한다.삽 입 된 위치 가 정상 인지, 이때 시계 가 꽉 찼 는 지 주의해 야 합 니 다.
int In_SeqList(SeqList *L,int i,ElemType x)
{
int j;
if(L->length == MAXSIZE-1)
{
printf("
");
return FALSE;
}
if(i<1 || i>L->length+1)
{
printf("
");
return FALSE;
}
for(j=L->length ; j>=i ; j--)
L->elem[j+1] = L->elem[j];
L->elem[i] = x;
L->length++;
return TRUE;
}
5 주 순서 표 의 삭제 순서 표 의 삭 제 는 표 의 i 번 째 요 소 를 순서 표 에서 삭제 하고 삭제 한 후에 표 의 길 이 를 1 로 줄 이 는 것 을 말한다.삭 제 된 위치 가 정확 한 지, 이 시계 가 비어 있 는 지 주의 하 십시오.
int Delete_SeqList(SeqList *L,int i)
{
int j;
if(i<1 || i>L->length)
{
printf(" %d
",i);
return FALSE;
}
for(j=i ; j<=L->length-1;j++)
L->elem[j] = L->elem[j+1];
L->length--;
return TRUE;
}
6 주 순서 표 의 찾기 는 순서 표 에서 주어진 요소 x 와 같은 값 을 찾 고 x 가 표 에 있 는 위 치 를 되 돌려 줍 니 다. 그렇지 않 으 면 FALSE 로 돌아 갑 니 다.
int Search_SeqList(SeqList *L,ElemType x)
{
int i=1;
while(i<=L->length && L->elem[i]!=x)
i++;
if(i > L->length)
return FALSE;
else
return i;
}
7 주 두 순서 표 는 두 순서 표 A 와 B 를 합 쳐 그 요 소 는 모두 큰 것 에서 작은 것 으로 배열 한 다음 에 이 두 순서 표를 하나의 순서 표 C 로 합 쳐 C 도 큰 것 에서 작은 것 으로 배열 하도록 요구한다.
void Merge_SeqList(SeqList *A,SeqList *B,SeqList *C)
{
int i,j,k;
i=j=k=1;
while(i<=A->length && j<B->length)
{
if(A->elem[i]<B->elem[j])
C->elem[k++] = A->elem[i++];
else
C->elem[k++] = B->elem[j++];
}
while(i <= A->length)
C->elem[k++] = A->elem[i++];
while(j <= B->length)
C->elem[k++] = B->elem[j++];
C->length = A->length + B->length;
}
총 코드
#include
#include
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE]; //
int length; //
}SeqList;
//
SeqList *Init_SeqList()
{
SeqList *L = (SeqList *)malloc(sizeof(SeqList));
L->length = 0;
return L;
}
//
int In_SeqList(SeqList *L,int i,ElemType x)
{
int j;
if(L->length == MAXSIZE-1)
{
printf("
");
return FALSE;
}
if(i<1 || i>L->length+1)
{
printf("
");
return FALSE;
}
for(j=L->length ; j>=i ; j--)
L->elem[j+1] = L->elem[j];
L->elem[i] = x;
L->length++;
return TRUE;
}
//
int Delete_SeqList(SeqList *L,int i)
{
int j;
if(i<1 || i>L->length)
{
printf(" %d
",i);
return FALSE;
}
for(j=i ; j<=L->length-1;j++)
L->elem[j] = L->elem[j+1];
L->length--;
return TRUE;
}
//
int Search_SeqList(SeqList *L,ElemType x)
{
int i=1;
while(i<=L->length && L->elem[i]!=x)
i++;
if(i > L->length)
return FALSE;
else
return i;
}
//
void Merge_SeqList(SeqList *A,SeqList *B,SeqList *C)
{
int i,j,k;
i=j=k=1;
while(i<=A->length && jlength)
{
if(A->elem[i]elem[j])
C->elem[k++] = A->elem[i++];
else
C->elem[k++] = B->elem[j++];
}
while(i <= A->length)
C->elem[k++] = A->elem[i++];
while(j <= B->length)
C->elem[k++] = B->elem[j++];
C->length = A->length + B->length;
}
//
void Show_SeqList(SeqList *L)
{
int i;
for(i=1;i<=L->length;i++)
{
printf("%d ",L->elem[i]);
if(i%15 == 0)
printf("
");
}
printf("
");
}
void print()
{
printf("1.
");
printf("2.
");
printf("3.
");
printf("4
");
printf("0.
");
printf(" :");
}
//
void Try_SeqList()
{
SeqList *L;
SeqList *A,*B,*C;
int i,x,choose;
L = Init_SeqList();
for(i=1 ; i<=10 ; i++)
In_SeqList(L,i,i);
printf(" L :");
Show_SeqList(L);
do
{
print();
scanf("%d",&choose);
switch ( choose )
{
case 1:
printf(" :");
scanf("%d%d",&i,&x);
In_SeqList(L,i,x);
printf(" , L :");
Show_SeqList(L);
break;
case 2:
printf(" :");
scanf("%d",&i);
Delete_SeqList(L,i);
printf(" , L :");
Show_SeqList(L);
break;
case 3:
printf(" :");
scanf("%d",&x);
printf("%d %d
",x,Search_SeqList(L,x));
break;
case 4:
A = Init_SeqList();
B = Init_SeqList();
C = Init_SeqList();
In_SeqList(A,1,1);
In_SeqList(A,2,3);
In_SeqList(A,3,5);
In_SeqList(A,4,7);
printf("A : ");
Show_SeqList(A);
In_SeqList(B,1,2);
In_SeqList(B,2,4);
In_SeqList(B,3,6);
In_SeqList(B,4,8);
printf("B : ");
Show_SeqList(B);
printf(" A B
");
Merge_SeqList(A,B,C);
printf("C : ");
Show_SeqList(C);
break;
case 0:
return ;
default:
printf(" !!!
");
}
printf(" ……");
getchar();
getchar();
} while (choose != 0);
}
int main(void)
{
Try_SeqList();
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에 따라 라이센스가 부여됩니다.