순서 표 의 실현 (2)
9280 단어 데이터 구조
1. 임의의 아래 표 시 된 요소 의 값 찾기
2. 임의의 위치 에 있 는 원소 에 값 설정
3. 대응 하 는 값 의 아래 표 시 를 찾 습 니 다.
4. 순서 표 에서 지정 한 값 을 삭제 합 니 다. 중복 요소 가 있 으 면 첫 번 째 만 삭제 합 니 다.
5. 순서 표 에서 지정 한 값 을 모두 삭제 하고 시간 복잡 도가 O (N) 인 최적화 버 전 을 실현 해 야 합 니 다.
6. 순서 표 요소 개수 가 져 오기
7. 순서 표 가 비어 있 는 지 판정
8. 일반적인 거품 정렬
9. 리 턴 함 수 를 이용 하여 거품 정렬
seqlist.h
#include
#include
#include
#define SeqlistMaxSize 20
#define Header_Print printf("
==========%s==========
",__FUNCTION__);
typedef char SeqlistType;
typedef struct Seqlist{
SeqlistType SeqlistArr[SeqlistMaxSize];
size_t size;
}Seqlist;
void SeqlistInit(Seqlist* seqlist);
void SeqlistRemoveAll2(Seqlist* seqlist,SeqlistType value);
void SeqlistGet(Seqlist* seqlist,size_t pos);
void SeqlistSet(Seqlist* seqlist,size_t pos,SeqlistType value);
void SeqlistFind(Seqlist* seqlist,SeqlistType value);
void SeqlistRemove(Seqlist* seqlist,SeqlistType to_delete);
void SeqlistRemoveAll(Seqlist* seqlist,SeqlistType to_delete);
size_t SeqlistSize(Seqlist* seqlist);
int SeqlistEmpty(Seqlist* seqlist);
void SeqlistBubbleSort(Seqlist* seqlist);
void SeqlistBubbleSortEx(Seqlist* seqlist,Cmp cmp);
void SeqlistPrint(Seqlist* seqlist,SeqlistType* ch);
void SeqlistPushBack(Seqlist* seqlist,SeqlistType value);
void SeqlistErase(Seqlist* seqlist,size_t pos);
typedef int (*Cmp)(SeqlistType a,SeqlistType b);
seqlist.c
#include"seqlist.h"
#include
void SeqlistGet(Seqlist* seqlist,size_t pos){
if(seqlist == NULL){
return;
}
if(pos >= seqlist->size){
return;
}
size_t value = seqlist->SeqlistArr[pos];
printf("%c",value);
}
void SeqlistSet(Seqlist* seqlist,size_t pos,SeqlistType value){
if(seqlist == NULL){
return;
}
if(pos >= seqlist->size){
return;
}
size_t i = seqlist->size - 1;
for(;i >= pos;--i){
seqlist->SeqlistArr[i+1]=seqlist->SeqlistArr[i];
}
seqlist->SeqlistArr[pos]=value;
seqlist->size++;
}
size_t SeqlistFind(Seqlist* seqlist,SeqlistType value){
if(seqlist == NULL){
return;
}
size_t i = 0;
for(;i < seqlist->size;++i){
if(seqlist->SeqlistArr[i] == value){
printf("pos = %d ",i);
return i;
}
}
return -1;
}
void SeqlistRemove(Seqlist* seqlist,SeqlistType to_delete){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
size_t i = 0;
size_t pos = 0;
for(;i < seqlist->size;++i){
if(seqlist->SeqlistArr[i] == to_delete)
pos = i;
}
SeqlistErase(seqlist,pos);
}
void SeqlistRemoveAll(Seqlist* seqlist,SeqlistType to_delete){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
size_t i = 0;
size_t pos=0;
for(;isize;i++){
if(seqlist->SeqlistArr[i] == to_delete){
pos = i;
for(pos=i;possize;pos++){
seqlist->SeqlistArr[pos]=seqlist->SeqlistArr[pos+1];
}
seqlist->size--;
}
}
}
size_t SeqlistSize(Seqlist* seqlist){
if(seqlist == NULL){
return;
}
size_t i=0;
size_t size=0;
for(;isize;i++)
size++;
printf("the number of seqlist is %ld
",size);
return size;
}
int SeqlistEmpty(Seqlist* seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
printf("the seqlist is empty
");
return 1;
}
else{
printf("the seqlist is not empty
");
return -1;
}
}
void SeqlistBubbleSort(Seqlist* seqlist){
if(seqlist == NULL){
return;
}
int i=0;
for(;isize-1;i++){
int j=0;
for(;jsize-1-i;j++){
if(seqlist->SeqlistArr[j]>seqlist->SeqlistArr[j+1]){
int tmp = seqlist->SeqlistArr[j];
seqlist->SeqlistArr[j]=seqlist->SeqlistArr[j+1];
seqlist->SeqlistArr[j+1]=tmp;
}
}
}
}
int Greater(SeqlistType a,SeqlistType b){
return a > b?1 : 0;
}
int Less(SeqlistType a,SeqlistType b){
return a < b?1 : 0;
}
Swap(SeqlistType *a,SeqlistType *b){
SeqlistType tmp=*a;
*a=*b;
*b=tmp;
}
void SeqlistBubbleSortEx(Seqlist* seqlist,Cmp cmp){
if(seqlist == NULL){
return;
}
size_t i=0;
size_t j=0;
for(i=0;isize-1;i++){
for(j=0;jsize-1-i;j++){
if(cmp(seqlist->SeqlistArr[j],seqlist->SeqlistArr[j+1])){
Swap(&seqlist->SeqlistArr[j],&seqlist->SeqlistArr[j+1]);
}
}
}
}
void SeqlistRemoveAll2(Seqlist* seqlist,SeqlistType value){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
int i=0;
int count=0;
for(;isize;i++){
if(seqlist->SeqlistArr[i]==value){
count++;
}
else{
seqlist->SeqlistArr[i-count]=seqlist->SeqlistArr[i];
}
}
seqlist->size-=count;
}
test.c
#include"sxb.h"
#include
void SeqlistInit(Seqlist* seqlist);
void SeqlistPushBack(Seqlist* seqlist,SeqlistType value);
void TestSeqlistGet(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistGet(&seqlist,1);
}
void TestSeqlistSet(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistSet(&seqlist,1,'b');
SeqlistPrint(&seqlist,"insert a value to the specific position");
}
void TestSeqlistFind(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistFind(&seqlist,'b');
}
void TestSeqlistRemove(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistRemove(&seqlist,'b');
SeqlistPrint(&seqlist,"delete a value to the specific value");
}
void TestSeqlistRemoveAll(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistPushBack(&seqlist,'b');
SeqlistRemoveAll(&seqlist,'b');
SeqlistPrint(&seqlist,"delete all the values of the specific value");
}
void TestSeqlistSize(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistSize(&seqlist);
}
void TestSeqlistEmpty(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistEmpty(&seqlist);
}
void TestSeqlistBubbleSort(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'d');
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'x');
SeqlistPushBack(&seqlist,'s');
SeqlistPushBack(&seqlist,'f');
SeqlistBubbleSort(&seqlist);
SeqlistPrint(&seqlist,"bubble sort
");
}
void TestSeqlistBubbleSortEx(){
int Greater(SeqlistType a,SeqlistType b);
int Less(SeqlistType a,SeqlistType b);
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'d');
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'x');
SeqlistPushBack(&seqlist,'s');
SeqlistPushBack(&seqlist,'f');
SeqlistBubbleSortEx(&seqlist,Less);
SeqlistPrint(&seqlist,"use the callback function for the bubble sort");
}
void TestSeqlistRemoveAll2(){
Header_Print;
Seqlist seqlist;
SeqlistInit(&seqlist);
SeqlistPushBack(&seqlist,'a');
SeqlistPushBack(&seqlist,'b');
SeqlistPushBack(&seqlist,'c');
SeqlistPushBack(&seqlist,'d');
SeqlistPushBack(&seqlist,'b');
SeqlistRemoveAll2(&seqlist,'b');
SeqlistPrint(&seqlist,"delete all the values of the specific value");
}
int main(){
TestSeqlistGet();
TestSeqlistSet();
TestSeqlistFind();
TestSeqlistRemove();
TestSeqlistRemoveAll();
TestSeqlistSize();
TestSeqlistEmpty();
TestSeqlistBubbleSort();
TestSeqlistBubbleSortEx();
TestSeqlistRemoveAll2();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.