#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define ERROR -1
#define OK 0
#define MAXNUM 100
typedef struct{
char *name;
}Student;
typedef struct{
Student cls[MAXNUM];
int length;
}SqList;
void InitSqList(SqList *&L)
{
L = (SqList*)malloc(sizeof(SqList));
L->length = 0;
}
int Inputname(Student*&S,SqList*&L)
{
int n=0;
char ch=0;
printf("请输入班级人名:\n");
while (1)
{
L->cls[n].name = (char*)malloc(sizeof(char));
if (scanf("%s",L->cls[n].name))
{
n++;
L->length++;
}
ch = getchar();
if (ch == '\n')
break;
}
return OK;
}
int InsertSqList(SqList*L, int n, char *a)
{
int k;
if (n < 0 || n > L->length + 1)
return ERROR;
else
for (k = L->length + 1; k >= n; k--){
L->cls[k] = L->cls[k - 1];
}
L->cls[n - 1].name = a;
L->length++;
return OK;
}
int DeleteSqList(SqList*L, int n)
{
int k;
if (n <= 0 || n > L->length)
return ERROR;
else
for (k = n; k < L->length; k++)
{
L->cls[k - 1] = L->cls[k];
}
L->length--;
return OK;
}
bool ListEmpty(SqList *L)
{
return (L->length == 0);
}
int Lookup(SqList*L, char *b)
{
int k;
int i = 0;
while (i < L->length&&(strcmp(L->cls[i].name,b)!= 0))
{
i++;
k = i;
}
if (i>=L->length)
printf("未找到该名字\n");
else
printf("%s在第%d个位置\n", b,k+1);
return OK;
}//
int DispSqList(SqList*L)
{
int i;
if (ListEmpty(L))
return ERROR;
printf("输出的班级人名为:\n");
for (i = 0; i < L->length; i++){
printf("%s", L->cls[i].name);
printf("\n");
}
return OK;
}
void main()
{
SqList*L;
Student*S;
InitSqList(L);
char temp;
int i;
i = 0;
temp = '0';
while (1)
{
if (temp == '0' || temp == '1' || temp == '2' || temp == '3' || temp == '4')
{
printf("---------Menu is as following--------\n");
printf(" press 1 return to input name from name.txt\n");
printf(" press 2 return to insert name\n");
printf(" press 3 return to lookup name \n");
printf(" press 4 return to print all name \n");
printf(" press q to quit\n");
}
temp = getchar();//从键盘上输入一个数字后回车,getchar会返回两次,一次是数字,一次是'\n',所以要做上面的处理。
switch (temp)
{
case '1':
Inputname(S,L);
break;
case '2':
printf("请输入想要插入的位置和姓名:\n");
int n;
char *a;
a = (char*)malloc(sizeof(char));
scanf("%d %s", &n,a);
InsertSqList(L, n, a);
break;
case '3':
printf("请输入你想要查询的姓名:\n");
char *b;
b= (char*)malloc(sizeof(char));
scanf("%s",b);
Lookup(L,b);
break;
case '4':
DispSqList(L);
break;
case 'q':
return;
default:
break;
}
}
return;
}