#pragma once
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
}SqList;
SqList L;
void welcomeInterface();
Status createSqList(SqList &L);
void printSqList(SqList L);
Status findSqList(SqList L,int k);
void sortSqList(SqList L);
Status binSearch(SqList L,int k);
#include"SqList.h"
#include<Windows.h>
#include<stdio.h>
int main()
{
while (1)
{
welcomeInterface();
}
return 0;
}
void welcomeInterface()
{
system("cls");
printf("-------------顺 序 表------------\n");
printf("| 1.创 建 顺 序 表 |\n");
printf("| 2.打 印 顺 序 表 |\n");
printf("| 3.顺 序 表 查 找 |\n");
printf("| 4.顺 序 表 排 序 |\n");
printf("| 5.折 半 查 找 |\n");
printf("| 0.退 出 |\n");
printf("-----------------------------------\n");
printf("请输入你的选择:");
char ch;
scanf("%c", &ch);
switch (ch)
{
case '1':system("cls"); createSqList(L); break;
case '2':system("cls"); printSqList(L); break;
case '3': {system("cls");
printf("请输入您要查找的元素:\n");
int k; scanf("%d",&k);
int n = findSqList(L, k);
printf("%d\n", n);
break; }
case '4':system("cls"); sortSqList(L); break;
case '5': {system("cls"); printf("请输入您要查找的元素:\n");
int k; scanf("%d", &k);
int n = binSearch(L, k);
printf("%d\n", n);
break; }
case '0':exit(ERROR);
default:printf("输入有误,请重新输入\n"); Sleep(100); welcomeInterface(); break;
}
system("pause");
}
Status createSqList(SqList &L)
{
L.elem = new ElemType[MAXSIZE];
if (!L.elem)
exit(ERROR);
printf("初始化表中的元素个数:");
int count=0;
scanf("%d", &count);
printf("请输入元素:");
for (int i = 1; i <=count; i++) {
scanf("%d", &L.elem[i]);
}
L.length = count;
return OK;
}
void printSqList(SqList L)
{
printf("顺序表如下:\n" );
for (int i = 1; i <= L.length; i++)
printf("%d ", L.elem[i]);
printf("\n");
}
Status findSqList(SqList L,int k)
{
for (int i = 1;i<=L.length; i++)
{
if (L.elem[i] == k)
return i;
}
return -1;
}
void sortSqList(SqList L)
{
int mid, j, flag;
mid = L.length - 1; flag = 1;
while ((mid > 0) && (flag == 1))
{
flag = 0;
for (j = 1; j <= mid; j++)
{
if (L.elem[j] > L.elem[j+1])
{
flag = 1;
int t = L.elem[j];L.elem[j] = L.elem[j+1];L.elem[j + 1]= t;
}
}
--mid;
}
}
Status binSearch(SqList L,int k)
{
int low = 1;
int high = L.length;
int mid;
while (low < high)
{
mid = (low + high) / 2;
if (k==L.elem[mid])
{
return mid;
}
else if (k < L.elem[mid])
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
}