#include "stdafx.h"
#include "SeqList.h"//自定义头文件
int main()
{
SeqList myList;
ListInitiate(&myList);//初始化
SortListInerst(&myList, 1);//有序插入顺序表
SortListInerst(&myList, 2);
SortListInerst(&myList, 6);
SortListInerst(&myList, 3);
SortListInerst(&myList, 5);
SortListInerst(&myList, 4);
for(int i=0;i<myList.size;i++)
printf("%d ", myList.list[i]);
printf("
");
return 0;
}
//输出 1 2 3 4 5 6
SeqList.h源码:
#pragma once
#pragma once
#include "stdio.h"
#define MaxSize 100
typedef int DataType;
typedef struct {
DataType list[MaxSize];
int size;
}SeqList;
void ListInitiate(SeqList *L) {//初始化顺序表
L->size = 0;
}
int ListLength(SeqList L) {//返回顺序表长度
return L.size;
}
int ListInerst(SeqList *L, int i, DataType x) {//插入元素
int j;
if (L->size >= MaxSize) {
printf("顺序表已满无法插入!");
return -1;
}
else if (i<0 || i>L->size) {
printf("输入参数有误!");
return -1;
}
else {
for (int j = L->size; j > i; j--)
L->list[j] = L->list[j - 1];
L->list[i] = x;
L->size++;
return 1;
}
}
int ListDelete(SeqList *L, int i, DataType *x) {//删除元素
int j;
if (L->size <= 0) {
printf("顺序表已空,无数据可删!");
return -1;
}
else if (i<0 || i>L->size - 1) {
printf("输入参数有误!");
return -1;
}
else {
*x = L->list[i];
for (j = i + 1; j <= L->size - 1; j++)
L->list[j - 1] = L->list[j];
L->size--;
return 1;
}
}
int ListGet(SeqList L, int i, DataType *x) {//取出索引为i处的元素
if (i < 0 || i>L.size - 1) {
printf("参数不合法!");
return -1;
}
else {
*x = L.list[i];
return 1;
}
}
int ListFind(SeqList L, DataType x) {//查找元素并返回索引
int i;
bool hasFind = false;
for (i = 0; i < L.size; i++) {
if (x == L.list[i]) {
return i;
hasFind = true;
break;
}
}
if (!hasFind) {
printf("顺序表中没有该数据!
");
return -1;
}
}
int SortListInerst(SeqList *L, DataType x) {
if (L->size == 0) {
L->list[0] = x;
L->size++;
return 1;
}
else {
for (int i = 0; i < L->size; i++)
if (x < L->list[i]) {
for (int j = L->size; j > i; j--)
L->list[j] = L->list[j - 1];
L->list[i] = x;
break;
}
else
L->list[L->size] = x;
L->size++;
return 1;
}
}