C 언어 로 순서 표 의 첨삭 과 역 치 를 실현 하 다.
15481 단어 데이터 구조
기왕 그것 이 수조 의 특징 이 있 고 선형 이라는 특징 을 가지 고 있 는 이상 가장 기본 적 인 증가, 삭제, 조사, 수정, 역 치 는 반드시 파악 해 야 할 것 이다. 오늘 우 리 는 순서 표 의 원소 에 대해 어떻게 첨삭, 수정 과 역 치 를 하 는 지 조사해 보 자.
:
void InitSeqList(PSeqList seq); //
void PushBack(PSeqList pSeqList, DataType data); //
void PopBack(PSeqList pSeqList); //
void PushFront(PSeqList pSepList, DataType data); //
void PopFront(PSeqList pSeqList); //
void Insert(PSeqList pSeqList, int pos, DataType data); //
void Erase(PSeqList pSeqList, int pos); //
int Find(PSeqList pSeqList, DataType data); //
void Remove(PSeqList PseqList, DataType data); //
int Empty(PSeqList pSeqList); //
void PrintSeqList(PSeqList pSeqList); //
void Inverse(PSeqList pSeqList); //
void Change(PSeqList pSeqList,DataType data1,DataType data2); //
:
#include
#include
#include
#define MAX_SIZE 10
typedef int DataType;
typedef struct SeqList
{
DataType array[MAX_SIZE];
int size;
}SeqList,*PSeqList;
void InitSeqList(PSeqList seq) //
{
memset(seq->array,0,MAX_SIZE*(sizeof(DataType)));
seq->size=0;
}
int Empty(PSeqList seq) //
{
if(seq->size > MAX_SIZE)
return 1;
else return 0;
}
void PushBack(PSeqList seq, DataType data) //
{
assert(seq); // ,
if(Empty(seq))
{
return;
}
seq->array[seq->size]=data;
seq->size++;
}
void PopBack(PSeqList seq) //
{
assert(seq);
if(Empty(seq))
{
return;
}
--seq->size;
}
void PushFront(PSeqList seq, DataType data) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=seq->size;i>0;i--)
{
seq->array[i]=seq->array[i-1];
}
seq->array[0]=data;
seq->size++;
}
void PopFront(PSeqList seq) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize-1;i++)
{
seq->array[i]=seq->array[i+1];
}
--seq->size;
}
void Insert(PSeqList seq, int pos, DataType data) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=seq->size;i>pos;i--)
{
seq->array[i]=seq->array[i-1];
}
seq->array[pos]=data;
seq->size++;
}
void Erase(PSeqList seq, int pos) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=pos;isize;i++)
{
seq->array[i]=seq->array[i+1];
}
--seq->size;
}
int Find(PSeqList seq, DataType data) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize;i++)
{
if(seq->array[i]==data)
{
printf("%d %d
",data,i+1);
return;
}
}
printf(" !
");
return;
}
void Remove(PSeqList seq, DataType data) //
{
int j=0;
int i=0;
int ret=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize;i++)
{
if(seq->array[i]==data)
{
for(j=i;jsize-1;j++)
{
seq->array[j]=seq->array[j+1];
}
--seq->size;
return;
}
}
printf("%d !
",data);
}
void PrintSeqList(PSeqList seq) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize;i++)
{
printf("%d ",seq->array[i]);
}
printf("
");
}
void Inverse(PSeqList seq) //
{
int i=0;
int temp=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize)/2;i++)
{
temp=seq->array[i];
seq->array[i]=seq->array[seq->size-1-i];
seq->array[seq->size-1-i]=temp;
}
}
void Change(PSeqList seq,DataType data1,DataType data2) //
{
int i=0;
assert(seq);
if(Empty(seq))
{
return;
}
for(i=0;isize;i++)
{
if(seq->array[i]==data1)
{
seq->array[i]=data2;
return;
}
}
printf("%d !
",data1);
}
:
void text()
{
SeqList seq;
InitSeqList(&seq); //
PrintSeqList(&seq);
PushBack(&seq,1);
PushBack(&seq,2);
PushBack(&seq,3);
PushBack(&seq,4);
PushBack(&seq,5);
PushBack(&seq,6);
PushBack(&seq,7); //
PrintSeqList(&seq);
PopBack(&seq); //
PrintSeqList(&seq);
PushFront(&seq,8);
PushFront(&seq,9); //
PrintSeqList(&seq);
PopFront(&seq); //
PrintSeqList(&seq);
Insert(&seq,3,10); //
PrintSeqList(&seq);
Erase(&seq,3); //
PrintSeqList(&seq);
Inverse(&seq); //
PrintSeqList(&seq);
Find(&seq,9); //
PrintSeqList(&seq);
Remove(&seq,9); //
PrintSeqList(&seq);
Change(&seq,9,2); //
PrintSeqList(&seq);
}
int main()
{
text();
system("pause");
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에 따라 라이센스가 부여됩니다.