C 언어 는 순서 표 의 첨삭 과 수정, 정렬 을 실현 한다.
seqlist.h:
#ifndef __SEQLIST__
#define __SEQLIST__
#define MAX 5
#include <stdlib.h>
typedef int DataType;
typedef struct SeqList
{
DataType array[MAX];
size_t size;
}SeqList;
void PrintSeqList(SeqList* pSeq);
void InitSeqList(SeqList* pSeq);
void PushBack(SeqList* pSeq,DataType x);
void PopBack(SeqList* pSeq);
void PushFront(SeqList* pSeq,DataType x);
void PopFront(SeqList* pSeq);
void Insert(SeqList* pSeq, size_t pos, DataType x);
int Find(SeqList* pSeq, DataType x);
void Erase(SeqList* pSeq, size_t pos);
void Remove(SeqList* pSeq, DataType x);
void RemoveAll(SeqList* pSeq, DataType x);
void BubbleSort(SeqList* pSeq);
void SeclectSort(SeqList* pSeq);
#endif
SeqList.c:
#include "Seqlist.h"
#include <assert.h>
#include <stdio.h>
void static Swap(DataType *left, DataType *right)//
{
DataType tmp = *left;
*left = *right;
*right = tmp;
}
void PrintSeqList(SeqList* pSeq)//
{
assert(pSeq);
size_t i = 0;
if (pSeq->size == 0)
{
printf("
");
return;
}
for (; i < pSeq->size; i++)
{
printf("%d ", pSeq->array[i]);
}
printf("
");
return;
}
void InitSeqList(SeqList* pSeq)//
{
assert(pSeq);
pSeq->size = 0;
}
void PushBack(SeqList* pSeq, DataType x)//
{
assert(pSeq);
if (pSeq->size == MAX)
{
printf("
");
return;
}
pSeq->array[pSeq->size++] = x;
return;
}
void PopBack(SeqList* pSeq)//
{
assert(pSeq);
if (pSeq->size == 0)
{
printf(" ,
");
return;
}
pSeq->size--;
return;
}
void PushFront(SeqList* pSeq, DataType x)//
{
size_t i = pSeq->size;
assert(pSeq);
if (pSeq->size == MAX)
{
printf("
");
return;
}
for (; i>0; i--)
{
pSeq->array[i] = pSeq->array[i-1];
}
pSeq->array[i] = x;
pSeq->size++;
return;
}
void PopFront(SeqList* pSeq)//
{
size_t i = 0;
assert(pSeq);
if (pSeq->size == 0)
{
printf("
");
return;
}
for (; i<pSeq->size-1; i++)
{
pSeq->array[i+1] = pSeq->array[i];
}
pSeq->size--;
return;
}
void Insert(SeqList* pSeq,size_t pos,DataType x)//
{
assert(pSeq);
size_t i = pSeq->size;
if (pSeq->size == MAX)
{
printf(" ,
");
return;
}
for (; i >=pos-1; i--)
{
pSeq->array[i] = pSeq->array[i - 1];
}
pSeq->array[pos - 1] = x;
pSeq->size++;
}
int Find(SeqList* pSeq, DataType x)//
{
assert(pSeq);
size_t i = 0;
for (; i < pSeq->size; i++)
{
if (pSeq->array[i] == x)
return i+1;
}
return -1;
}
void Erase(SeqList* pSeq, size_t pos )//
{
assert(pSeq);
if (pSeq->size == 0)
{
printf(" ,
");
return;
}
if (pos > pSeq->size)
{
printf(" ,
");
return;
}
size_t i = pos-1;
for (; i <pSeq->size; i++)
{
pSeq->array[i] = pSeq->array[i+1];
}
pSeq->size--;
}
void Remove(SeqList* pSeq, DataType x)//
{
Erase(pSeq, Find(pSeq,x));
}
void RemoveAll(SeqList* pSeq, DataType x)//
{
assert(pSeq);
size_t i = 0;
size_t count = 0;
for (; i < pSeq->size; i++)
{
if (pSeq->array[i] == x)
{
count++;
}
else
{
pSeq->array[i - count] = pSeq->array[i];
}
}
pSeq->size -= count;
}
void BubbleSort(SeqList* pSeq)//
{
assert(pSeq);
size_t i = 0;
size_t j = 0;
for (; i < pSeq->size; i++)
{
for (j = 0; j < pSeq->size - i -1; j++)
{
if (pSeq->array[j]>pSeq->array[j + 1])
{
Swap(&pSeq->array[j], &pSeq->array[j + 1]);
}
}
}
}
void SeclectSort(SeqList* pSeq)//
{
size_t min;
size_t i = 0;
size_t j = 0;
for (; i < pSeq->size; i++)
{
min = i;
for (j = min; j < pSeq->size; j++)
{
if (pSeq->array[min]>pSeq->array[j])
{
min = j;
}
}
Swap(&pSeq->array[i], &pSeq->array[min]);
}
}
테스트 코드:
#include <stdio.h>
#include "Seqlist.h"
void test1(SeqList*pSeq)//
{
InitSeqList(pSeq);
PrintSeqList(pSeq);
PushBack(pSeq, 1);
PushBack(pSeq, 2);
PushBack(pSeq, 3);
PushBack(pSeq, 4);
PushBack(pSeq, 5);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
PopBack(pSeq);
PopBack(pSeq);
PopBack(pSeq);
PopBack(pSeq);
PopBack(pSeq);
PopBack(pSeq);
PrintSeqList(pSeq);
PushFront(pSeq, 5);
PushFront(pSeq, 4);
PushFront(pSeq, 3);
PushFront(pSeq, 2);
PushFront(pSeq, 1);
PushFront(pSeq, 1);
PrintSeqList(pSeq);
}
void test2(SeqList*pSeq)
{
InitSeqList(pSeq);
PushBack(pSeq, 1);
PushBack(pSeq, 2);
PushBack(pSeq, 3);
PushBack(pSeq, 4);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
PopFront(pSeq);
PopFront(pSeq);
PopFront(pSeq);
PopFront(pSeq);
PopFront(pSeq);
PopFront(pSeq);
}
void test3(SeqList*pSeq)
{
InitSeqList(pSeq);
PushBack(pSeq, 1);
PushBack(pSeq, 3);
PushBack(pSeq, 4);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
Insert( pSeq,2,2);
PrintSeqList(pSeq);
Insert(pSeq, 2, 2);
}
void test4(SeqList*pSeq)
{
InitSeqList(pSeq);
PushBack(pSeq, 1);
PushBack(pSeq, 2);
PushBack(pSeq, 3);
PushBack(pSeq, 4);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
Erase(pSeq, 2);
PrintSeqList(pSeq);
Erase(pSeq, 5);
PrintSeqList(pSeq);
}
void test5(SeqList*pSeq)
{
InitSeqList(pSeq);
PushBack(pSeq, 1);
PushBack(pSeq, 2);
PushBack(pSeq, 3);
PushBack(pSeq, 1);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
RemoveAll(pSeq, 1);
PrintSeqList(pSeq);
}
void test6(SeqList*pSeq)//
{
InitSeqList(pSeq);
PushBack(pSeq, 2);
PushBack(pSeq, 4);
PushBack(pSeq, 3);
PushBack(pSeq, 1);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
BubbleSort(pSeq);
PrintSeqList(pSeq);
}
void test7(SeqList*pSeq)
{
InitSeqList(pSeq);
InitSeqList(pSeq);
PushBack(pSeq, 2);
PushBack(pSeq, 4);
PushBack(pSeq, 3);
PushBack(pSeq, 1);
PushBack(pSeq, 5);
PrintSeqList(pSeq);
SeclectSort(pSeq);
PrintSeqList(pSeq);
}
int main()
{
SeqList SL;
test1(&SL);
test2(&SL);
test3(&SL);
printf("%d
", Find(&SL, 5));
test4(&SL);
test5(&SL);
test6(&SL);
test7(&SL);
system("pause");
return 0;
}
만약 부족 하 다 면 비판 과 시정 을 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.