myTest04.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct SeqList
{
int *datas;
int count;
int size;
};
void readFile(struct SeqList *list, char *filePath);
void opration(struct SeqList *list);
void showData(struct SeqList *list);
void findData(struct SeqList *list);
void insertData(struct SeqList *list);
void delData(struct SeqList *list);
void getData(struct SeqList *list);
int get(struct SeqList *list, int pos);
int main()
{
struct SeqList list;
struct SeqList *pl = &list;
list.size = 1000;
list.count = 0;
list.datas = (int *)malloc(sizeof(int) * list.size);
readFile(pl, "test02.txt");
if (list.count != -1)
{
_flushall();
opration(pl);
}
return 0;
}
void readFile(struct SeqList *list, char *filePath)
{
int count = 0;
char buf[1024];
FILE *fp = fopen(filePath, "r");
if (fp == NULL)
{
printf("文件打开失败");
}
while (!feof(fp) && (count <= (list->size)))
{
fgets(buf, 1024, fp);
list->datas[count] = atoi(buf);
count++;
}
if (count == list->size && !feof(fp))
{
printf("数组容器最大承载 %d 个数字", list->size);
}
fclose(fp);
list->count = count;
}
void opration(struct SeqList *list)
{
_flushall();
char op;
printf("操作说明:\n1:显示数据\n2:查找数据\n3:插入数据\n4:删除数据\n5:获取数据\n0:退出\n");
while (1)
{
printf("请输入您的操作:");
_flushall();
op = getchar();
if (op == '0' || op == '1' || op == '2' || op == '3' || op == '4' || op == '5')
{
if (op == '0')
{
printf("退出成功\n");
return;
}
break;
}
else
{
printf("您的输入有误\n");
}
}
while (op != '0')
{
switch (op)
{
case '1':
showData(list);
break;
case '2':
findData(list);
break;
case '3':
insertData(list);
break;
case '4':
delData(list);
break;
case '5':
getData(list);
break;
default:
printf("请输入合法字符\n");
break;
}
printf("请继续您的操作:");
_flushall();
op = getchar();
if (op == '0')
{
printf("退出成功\n");
}
}
}
void showData(struct SeqList *list)
{
int j = 0;
while (j < list->count)
{
printf("%d : %d\n", j + 1, list->datas[j]);
j++;
}
}
void findData(struct SeqList *list)
{
int value;
int i = 0;
printf("请输入您要查找的内容:");
scanf("%d", &value);
while (i < list->count)
{
if (value == list->datas[i])
{
printf("查找成功,位置:%d 内容:%d\n", i + 1, list->datas[i]);
return;
}
i++;
}
printf("查找失败:没有此内容\n");
}
void insertData(struct SeqList *list)
{
int pos;
int value;
int j;
printf("请输入您将要插入的数据:");
scanf("%d", &value);
printf("请输入您要插入的位置:");
scanf("%d", &pos);
while (1)
{
if (list->count == list->size)
{
printf("容器已满,无法插入\n");
return;
}
else if (pos < 1 || pos >= list->count + 2)
{
printf("插入的位置不合理,请重新输入位置:");
scanf("%d", &pos);
}
else
{
break;
}
}
j = list->count;
while (j >= pos)
{
list->datas[j] = list->datas[j - 1];
j--;
}
list->datas[pos - 1] = value;
(list->count)++;
printf("插入成功\n");
}
void delData(struct SeqList *list)
{
int pos;
int j;
printf("请输入删除的位置:");
scanf("%d", &pos);
while (1)
{
if ((pos < 1 || pos > list->count))
{
printf("删除的位置不存在,请重新输入:");
scanf("%d", &pos);
}
else
{
break;
}
}
j = pos;
while (j <= list->count)
{
list->datas[j - 1] = list->datas[j];
j++;
}
printf("删除成功\n");
(list->count)--;
}
void getData(struct SeqList *list)
{
int value;
int pos;
printf("请输入要获取元素的位置:");
scanf("%d", &pos);
while (1)
{
if (pos < 1 || pos > list->count)
{
printf("输入不合理,请重新输入:");
scanf("%d", &pos);
}
else
{
break;
}
}
value = get(list, pos);
printf("查找成功,值为:%d\n", value);
}
int get(struct SeqList *list, int pos)
{
return list->datas[pos - 1];
}
test02.txt
11
22
33
44
55
66
77
88
99
100
转载请注明原文地址:https://blackberry.8miu.com/read-36636.html