C++정적 배열 기반 순서 표 구현

본 논문 의 사례 는 C++정적 배열 을 바탕 으로 하 는 순서 표를 공유 하여 여러분 께 참고 하 실 수 있 습 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
실 현 된 기본 동작 은 다음 과 같다.
1.초기 화
2.꼬리 꽂 기
3.삭제
4.플러그
5.삭제
6.임의의 원소 찾기
7.임의의 위치 요소 읽 기
8.임의의 위치 요소 수정
9.지정 한 요소 값 의 아래 표 시 를 찾 습 니 다.
10.임의의 위치 에 요소 삽입
11.지정 한 위치의 요소 삭제
12.임의의 요소 삭제
13.인쇄 데이터
헤더 파일 seqlist.h:

#pragma once 

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

#define maxsize 1000//        

typedef int seqType;
typedef struct seqlist
{
  seqType arr[maxsize];//   ,    
  size_t size;//size_t       ,     ,size          
}seqlist ;

void PrintSeqList(seqlist *seq); //    
void print_seqlist(char *s); //    
void seqlistInit(seqlist *seq); //     

void seqlistPushBack(seqlist *seq, seqType value); //    ,value       
void seqlistPopBack(seqlist *seq); //    ,value       

void seqlistPushHead(seqlist*seq, seqType value); //    
void seqlistPopHead(seqlist*seq); //    

seqType seqlistFind(seqlist *seq, seqType data); //      
seqType seqlistRead_pos(seqlist*seq, size_t pos); //         
size_t seqlistFind_pos(seqlist*seq, seqType value); //         

seqType seqlistModify(seqlist*seq, size_t pos, seqType data); //         
void seqlistInsert_pos(seqlist *seq, size_t pos, seqType data); //         

void seqlistErase_pos(seqlist *seq, size_t pos); //         
void seqlistRemove(seqlist *seq, seqType data); //    
파일 seqlist.c 구현

#include"seqlist.h"
void PrintSeqList(seqlist *seq)//    
{
  size_t i = 0;
  if (seq->size == 0)
  {
    printf("     ,    
"); return; } for (i = 0; i < seq->size; i++) { printf(" %d :%d
",i, seq->arr[i]); } printf("
"); } void print_seqlist(char *s)// { int i = 0; printf("%s
",s); printf("
"); } void seqlistInit(seqlist *seq)// { assert(seq); seq->size = 0;// 0; } void seqlistPushBack(seqlist *seq, seqType value)// ,value { assert(seq);// if (seq->size == maxsize) { printf(" ,
"); return; } else seq->arr[seq->size++] = value; } void seqlistPopBack(seqlist *seq)// ,value { assert(seq);// if (seq->size ==0) { printf(" ,
"); return; } else seq->size--; } void seqlistPushHead(seqlist *seq, seqType value)// { assert(seq);// if (seq->size == maxsize) { printf(" ,
"); return; } else { int i = seq->size - 1; for (; i >= 0; i--) { seq->arr[i + 1] = seq->arr[i]; } seq->arr[0]=value; seq->size++; } } void seqlistPopHead(seqlist *seq)// { assert(seq);// if (seq->size == 0) { printf(" ,
"); return; } else { size_t i =1; for (; i < seq->size; i++) { seq->arr[i - 1] = seq->arr[i]; } seq->size--; } } seqType seqlistFind(seqlist *seq, seqType data)// { size_t i = 0; assert(seq);// if (seq->size == 0) { printf("
"); return -1; } for (i = 0; i < seq->size - 1; i++) { if (seq->arr[i] == data) { return seq->arr[i]; } } return -1; } seqType seqlistRead_pos(seqlist *seq, size_t pos)// { assert(seq);// if (seq->size == 0) { printf(" ,
"); return -1; } else if (pos> seq->size) { printf("
"); } else return seq->arr[pos]; } size_t seqlistFind_pos(seqlist *seq, seqType value)// { assert(seq);// size_t i= 0; for (; i < seq->size; i++) { if (seq->arr[i] == value) return i; } return -1; } seqType seqlistModify(seqlist *seq, size_t pos, seqType data)// { assert(seq);// if (seq->size == 0) { printf(" ,
"); return -1; } for (; pos < seq->size; pos++) { seq->arr[pos] = data; return seq->arr[pos]; } } void seqlistInsert_pos(seqlist *seq, size_t pos, seqType data)// { assert(seq); if (seq->size == maxsize) { printf(" ,
"); return; } else if (pos>seq->size) { printf(" ,
"); return; } else { size_t m= seq->size ; for (m = seq->size; m > pos; m--) { seq->arr[m] = seq->arr[m-1]; } seq->arr[pos] = data; seq->size++; } } void seqlistErase_pos(seqlist *seq, size_t pos)// { assert(seq); if (seq == NULL) { printf(" !
"); return; } else if (pos > seq->size) { printf(" !
"); return; } else { size_t i ; for (i = pos; i < seq->size-1; i++) { seq->arr[i] = seq->arr[i+1]; }seq->size--; } } void seqlistRemove(seqlist *seq, seqType data)// { assert(seq);// size_t i = 0; i = seqlistFind_pos(seq,data); if (i >= 0) { while (i <seq->size) { seq->arr[i] = seq->arr[i + 1]; i++; } seq->size--; return; } else { printf(" "); return; } }
삽입,삭제 등 작업 을 할 때 요소 의 위치 이동 이 명확 하지 않 으 면 그림 을 통 해 더욱 잘 이해 할 수 있다.
테스트 함수 test.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"seqlist.h"

void Test_PushBack()//         
{
  print_seqlist("*****  3       *****");
  seqlist seq;
  seqlistInit(&seq);
  seqlistPushBack(&seq, 2);
  seqlistPushBack(&seq, 4);
  seqlistPushBack(&seq, 6);
  PrintSeqList(&seq);
}

void Test_PopBack()//         
{
  print_seqlist("*****       1   *****");
  seqlist seq;
  seqlistInit(&seq);
  seqlistPushBack(&seq, 2);
  seqlistPushBack(&seq, 4);
  seqlistPushBack(&seq, 6);
  PrintSeqList(&seq);
  seqlistPopBack(&seq);
  PrintSeqList(&seq);

}

void Test_PushHead()//    
{
  print_seqlist("*****       3   *****");
  seqlist seq;
  seqlistInit(&seq);
  seqlistPushHead(&seq, 2);
  seqlistPushHead(&seq, 4);
  seqlistPushHead(&seq, 6);
  PrintSeqList(&seq);

}

void Test_PopHead()//    
{
  print_seqlist("*****       1   *****");
  seqlist seq;
  seqlistInit(&seq);
  seqlistPushHead(&seq, 2);
  seqlistPushHead(&seq, 4);
  seqlistPushHead(&seq, 6);
  PrintSeqList(&seq);
  seqlistPopHead(&seq);
  PrintSeqList(&seq);

}

void Test_Find()//      
{
  print_seqlist("*****           *****");
  seqlist seq;
  seqlistInit(&seq);
  seqlistPushBack(&seq, 2);
  seqlistPushBack(&seq, 4);
  seqlistPushBack(&seq, 6);
  PrintSeqList(&seq);
  int temp = 0;
  temp = seqlistFind(&seq,2);
  printf("       %d
", temp); printf("
"); } void Test_Read_pos()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 6); PrintSeqList(&seq); int temp = 0; temp=seqlistRead_pos(&seq, 1); printf(" 1 %d
", temp); printf(" 4 :"); seqlistRead_pos(&seq, 4); printf("
"); } void Test_seqlistFind_pos()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 6); seqlistPushBack(&seq, 7); PrintSeqList(&seq); size_t pos = seqlistFind_pos(&seq, 4); size_t pos1 = seqlistFind_pos(&seq, 9); printf(" 4 :%d
", pos); printf(" 9 :%d,
", pos1); printf("
"); } void Test_seqlistModify()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 6); seqlistPushBack(&seq, 7); PrintSeqList(&seq); int temp = seqlistModify(&seq, 1, 3); int temp1 = seqlistModify(&seq, 2, 8); PrintSeqList(&seq); printf(" 1 :%d
", temp); printf(" 2 :%d
", temp1); } void Test_seqlistInsert()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 5); seqlistPushBack(&seq, 6); PrintSeqList(&seq); seqlistInsert_pos(&seq, 2, 3); PrintSeqList(&seq); seqlistInsert_pos(&seq, 8, 9); } void Test_seqlistErase_pos()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 5); seqlistPushBack(&seq, 6); PrintSeqList(&seq); seqlistErase_pos(&seq, 1); seqlistErase_pos(&seq, 4); PrintSeqList(&seq); } void Test_Remove()// { print_seqlist("***** *****"); seqlist seq; seqlistInit(&seq); seqlistPushBack(&seq, 2); seqlistPushBack(&seq, 4); seqlistPushBack(&seq, 5); seqlistPushBack(&seq, 6); PrintSeqList(&seq); seqlistRemove(&seq, 4); PrintSeqList(&seq); } int main() { Test_PushBack(); Test_PopBack(); Test_PushHead(); Test_PopHead(); Test_Find(); Test_Read_pos(); Test_seqlistFind_pos(); Test_seqlistModify(); Test_seqlistInsert(); Test_seqlistErase_pos(); Test_Remove(); return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기