정적 순서 표
꼬리 삽입, 꼬리 삭제, 머리 삽입, 머리 삭제, 임 의 위치 삽입, 임 의 위치 삭제, 정렬, 찾기, 반전 등 기능 을 실현 합 니 다.
#ifndef __SEQ_TABLE_S_H__
#define __SEQ_TABLE_S_H__
#define MAX 100
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<assert.h>
typedef int DataType;
//
typedef struct SeqList
{
DataType arr[MAX];
int size ;
}SeqList,*pSeqList;
void InitSeqList(pSeqList pSeq);//
void PrintSeqList(SeqList Seq);//
void PushBack(pSeqList pSeq,DataType x);//
void PopBack(pSeqList pSeq);//
void PushFront(pSeqList pSeq, DataType x);//
void PopFront(pSeqList pSeq);//
void Insert(pSeqList pSeq, int pos, DataType x);//
void Remove(pSeqList pSeq, DataType x);//
void RemoveAll(pSeqList pSeq, DataType x);//
int Find(SeqList Seq,DataType x);//
void ReverseList(pSeqList pSeq);//
void SortList(pSeqList pSeq);//
int BinarySearch(SeqList Seq,DataType x);//
void InitSeqList(pSeqList pSeq)
{
assert(pSeq);
memset(pSeq->arr, 0, sizeof(pSeq->arr));//
pSeq->size = 0;
}
void PrintSeqList(SeqList Seq)
{
int i = 0;
for (i = 0; i < Seq.size; i++)
{
printf("%d ", Seq.arr[i]);
}
printf("over
");
}
void PushBack(pSeqList pSeq, DataType x)//
{
assert(pSeq);
if (pSeq->size >= MAX)
{
printf("
");
return;
}
// pSeq->arr[pSeq->size] = x;
// pSeq->size++;
pSeq->arr[pSeq->size++]=x;
}
void PopBack(pSeqList pSeq)//
{
assert(pSeq);
if (pSeq->size == 0)
{
printf("
");
return;
}
pSeq->size--;
}
void PushFront(pSeqList pSeq, DataType x)//
{
assert(pSeq);
int i = 0;
if (pSeq->size >= MAX)
{
printf("
");
return;
}
for (i = pSeq->size; i > 0; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[0] = x;
pSeq->size++;
}
void PopFront(pSeqList pSeq)//
{
assert(pSeq);
int i = 0;
if (pSeq->size == 0)
{
printf("
");
return;
}
for (i = 0; i < pSeq->size; i++)
{
pSeq->arr[i] = pSeq->arr[i + 1];
}
pSeq->size--;
}
void Insert(pSeqList pSeq, int pos, DataType x)//
{
int i = 0;
assert(pSeq);
assert((pos < pSeq->size) && (pos >= 0));
if (pSeq->size == MAX)
{
printf("
");
return;
}
for (i = pSeq->size; i>pos; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[pos] = x;
pSeq->size++;
}
int Find(SeqList Seq, DataType x)
{
int i = 0;
for (i = 0; i < Seq.size; i++)
{
if (x == Seq.arr[i])
{
return i;
}
}
return -1;
}
void Remove(pSeqList pSeq, DataType x)//
{
int pos = Find(*pSeq, x);
int i = 0;
assert(pSeq);
if (pos != -1)
{
for (i = pos; i < pSeq->size; i++)
{
pSeq->arr[i] = pSeq ->arr[i + 1];
}
pSeq->size--;
}
}
void RemoveAll(pSeqList pSeq, DataType x)//
{
while (Find(*pSeq, x) != -1)
{
Remove(pSeq, x);
}
}
void ReverseList(pSeqList pSeq)//
{
int start = 0;
int end = pSeq->size - 1;
assert(pSeq);
while (start < end)
{
DataType tmp = pSeq->arr[start];
pSeq->arr[start] = pSeq->arr[end];
pSeq->arr[end] = tmp;
start++;
end--;
}
}
void SortList(pSeqList pSeq)//
{
assert(pSeq);
int i = 0;
int j = 0;
for (i = 0; i < pSeq->size-1; i++)
{
for (j = 0; j < pSeq->size - i - 1; j++)
{
if (pSeq->arr[j]>pSeq->arr[j + 1])
{
DataType tmp = pSeq->arr[j];
pSeq->arr[j] = pSeq->arr[j + 1];
pSeq->arr[j + 1] = tmp;
}
}
}
}
int BinarySearch(SeqList Seq, DataType x)//
{
int left = 0;
int right = Seq.size - 1;
while (left <= right)
{
int mid = left - ((left - right) >> 1);
if (Seq.arr[mid] > x)
right = mid - 1;
else if (Seq.arr[mid] == x)
return mid;
else
left = mid + 1;
}
return -1;
}
#endif//__SEQ_TABLE_S_H__
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.