추가 삭제 하고 삽입 할 수 있 는 선형 표 (2)
6834 단어 데이터 구조 - 선형 표
이 어 지난번 기능 을 계속 추가 하 겠 습 니 다. 시간 이 지나 면 업데이트 하 겠 습 니 다. 테스트 함수 와 Bubble SortEx () 를 추가 하 겠 습 니 다. 자, 시작 하 겠 습 니 다. 먼저 각 함수 의 기능 을 소개 하 겠 습 니 다.
순서 표를 초기 화하 다
void SeqListInit(SeqList* seq);
순서 표 의 끝 에 요 소 를 삽입 합 니 다.
void SeqListPushBack(SeqList* seq, SeqType value);
순서 표 의 마지막 요 소 를 삭제 합 니 다.
void SeqListPopBack(SeqList* seq);
순서 표 앞 에 요 소 를 삽입 합 니 다.
void SeqListPushFront(SeqList* seq, SeqType value);
순서 표 의 첫 번 째 요 소 를 삭제 합 니 다.
void SeqListPopFront(SeqList* seq);
순서 표 의 임의의 위치 에 있 는 요 소 를 가 져 옵 니 다.
SeqType SeqListGet(SeqList* seq, size_t pos, SeqType default_value);
순서 표 에서 지정 한 위치의 값 을 설정 합 니 다.
void SeqListSet(SeqList* seq, size_t pos, SeqType value);
순서 표 에서 지정 한 요소 의 아래 표 시 를 찾 습 니 다.
size_t SeqListFind(SeqList* seq, SeqType value);
지정 한 위치 에 요 소 를 삽입 합 니 다.
void SeqListInsert(SeqList* seq, size_t pos, SeqType value);
지정 한 위치의 요소 삭제
void SeqListErase(SeqList* seq, size_t pos);
순서 표 에서 지정 한 값 을 삭제 합 니 다. 중복 요소 가 있 으 면 첫 번 째 만 삭제 합 니 다.
void SeqListRemove(SeqList* seq, SeqType to_delete);
순서 표 의 모든 지정 한 값 을 삭제 합 니 다.
void SeqListRemoveAll(SeqList* seq, SeqType to_delete);
순서 표 요소 갯 수 가 져 오기
size_t SeqListSize(SeqList* seq);
순서 표 가 비어 있 는 지 여 부 를 판정 합 니 다.
int SeqListEmpty(SeqList* seq);
거품 정렬
void SeqListBubbleSort(SeqList* seq);
거품 정렬
void SeqListBubbleSortEx(SeqList* seq, int (*cmp)(SType , SType));
코드 는 다음 과 같다.
seqlist.h
#pragma once
#include
#define SeqlistMaxSize 1000
typedef char SeqType;
typedef struct SeqListList{
SeqListType data[SeqListMaxSize];
size_t size;
}SeqList;
void SeqListInit(SeqList* seq);
void SeqListPushBack(SeqList* seqlist,SeqListType value);
void SeqListPopBack(SeqList* seqlist);
void SeqListPushFront(SeqList* seqlist,SeqListType value);
void SeqListPopFront(SeqList* seqlist)
size_t SeqListFind(SeqList* seq,SeqType value);
void SeqListInsert(SeqList* seq,size_t pos,SeqListType value);
void SeqListErase(SeqList* seqlist,size_t pos);
SeqType SeqListGet(SeqList *seqlist,size_t pos,SeqListType default_value);
void SeqListSet(SeqList* seqlist,size_t pos,SeqListType default_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);
seqlist.c
#include
#include"seqlist.h"
void SeqListInit(SeqList* seqlist){
if(seqlist == NULL){
return;
}
seqlist->size = 0;
}
void SeqListPushBack(SeqList* seqlist,SeqType){
if(seqlist == NULL){
return;
}
if(seqlist->size >= SeqListMaxSize){
return;
}
++seqlist->size;
seqlist->data[seqlist->size] = value;
return;
}
void SeqListPopBack(SeqList* seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;//kong shunxubiao
}
--seqlist->size;
}
void SeqListPushFront(SeqList* seqlist,SeqType value){
if(seqlist == NULL){
return;
}
if(seqlist->size >= SeqlistMaxSize){
return;
}
++seqlist->size;
size_t i = seqlist->size -1;
for(;i>0;i--){
seqlist->data[i] = seqlist->data[i-1];
}
seqlist->data[0] = value;
return;
}
void SeqListPopFront(SeqList* seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;//kongshunxubiao
}
size_t i = 0;
for(;isize - 1;++i){
seqlist->data[i] = seqlist->data[i+1];
}
--seqlist->size;
return;
}
void SeqListInsert(SeqList* seqlist,size_t pos,SeqType value){
if(seqlist == NULL){
return;
}
if(pos > seqlist->size){
return;//pos yuejie pos->[0,pos]
}
if(seqlist->size >= SeqListMaxSize){
return;//shunxubiao yijing manle
}
if(pos == 0 ){
SeqListPushFront(seqlist,value);
return;
}
++seqlist->size;
size_t i = seqlist->size - 1;
for(;i - 1 >= pos;--i){
seqlist->data[i] = seqlist->data[i - 1];
}
seqlist->data[pos] = value;
return;
}
void SeqListErase(SeqList* seqlist,size_t pos){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
if(pos >= seqlist->size){
return;//yuejie
}
size_t i = pos;
for(;isize - 1;++i){
seqlist->data[i] = seqlist->data[i+1];
}
--seqlist->size;
return;
}
SeqType SeqListGet(SeqList* seqlist,size_t pos,SeqType default_value){
if(seqlist == NULL){
return;
}
if(SeqList->size == 0){
return;
}
if(pos >= seqlist->size){
return pos;
}
return seqlist->data[pos];
}
void SeqListSet(SeqList* seqlist,size_t pos,SeqType default_value){
if(seqlist == NULL){
return;
}
if(seqlist->size == 0){
return;
}
if(pos >= seqlist->size){
return;//yuejie
}
seqlist->data[pos] = value;
return;
}
size_t SeqListFind(SeqList* seqlist,SeqType value){
if(seqlist == NULL){
return;
}
size_t i = 0;
for(;i < seqlist->size;++i){
if(value == seqlist->data[i]){
return i;
}
}
return (size_t)-1;
}
void SeqListRemove(SeqList* seqlist,SeqType to_delete){
if(seqlist == NULL){
return;
}
size_t i = 0;
for(;i < seqlist->size;++i){
if(seqlist->data[i] == to_delete){
for(;i < seqlist->size;++i){
seqlist->data[i] == seqlist->data[i+1];
}
}
break;
}
--seqlist->size;
return;
}
void SeqListRemoveAll(SeqList* seqlist,SeqType value){
if(seqlist == NULL){
return;
}
size_t i = 0;
size_t j = 0
for(;i < seqlist->size;++i){
if(seqlist->data[i] == value){
for(j = i;j < seqlist->size;++j){
seqlist->data[j] == seqlist->data[j+1];
}
}
--seqlist->size;
}
return;
}
size_t SeqListSize(SeqList* seqlist){
if(seqlist == NULL){
return NULL;
}
size_t i = 1;
while(i <= seqlist->size){
;
++i;
}
return i;
}
int SeqListEmpty(SeqList* seqlist){
if(seqlist == NULL){
return;
}
if(seqlist->data[0] != NULL){
return 0;
}
else{
return 1;
}
}
void SeqListBubbleSort(SeqList* seqlit){
if(seqlit == NULL){
return;
}
size_t i = 0;
size_t j = 0;
for(;i < seqlist->size;++i){
for(j = i;j < seqlist->size;++j){
SeqType value = 0;
if(seqlist->data[i] > seqlist->data[i+1]){
value = seqlist->data[i];
seqlist->data[i] = seqlist->data[i+1];
seqlist->data[i+1] = value;
}
}
}
return;
}
좋아 하 는 친구 가 저 에 게 좋아요 나 댓 글 을 남 겨 주세요. 코드 에 오류 가 있 으 면 댓 글 에서 지적 해 주세요. 저 는 진지 하 게 의견 을 받 아들 이 겠 습 니 다. 읽 어 주 셔 서 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
추가 삭제 검사 삽입 선형 표 (1)또 좋 은 하루 가 끝 났 습 니 다. 작업 을 재촉 하 는 하루 하루 가 그렇게 고 통 스 럽 지 않도록 자기 전에 최근 에 쓴 초기 화, 삭제, 검사, 지 정 된 위치 읽 기, 수정, 요 소 를 삽입 하여 지 정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.