|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
百度看到有人说C语言中没有&没有作为引用 这一说法,把&删除后虽然程序没有报错但是并不能正常的运行
以c++的格式打开后就都可以正常运行,想要在C语言的环境下运行,但怎么改都搞不明白
想请教一下大家
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define N 40 //线性表存储空间的初始分配量
#define increase 10 //线性表存储空间的分配量增量
int choice; //定义全局变量
typedef struct {
char name[20];
int num; //学号和房号都为整型
int room;
} stu;
stu stud;
typedef struct {
int length; //当前长度
stu *elem; //存储空间基址
int listsize; //当前分配的存储容量
} linklist;
//线性表初始化
void Init(linklist &L) {
L.length = 0;
L.elem = (stu *)malloc(N * sizeof(stu));
L.listsize = N;
}
//操作菜单
void Menu() {
printf( "**************************************\n" );
printf( "*** 欢迎进入宿舍管理系统 ***\n" );
printf( "**************************************\n" );
printf( "* 1. 新建宿舍名单 *\n" );
printf( "* 2. 排序宿舍信息 *\n" );
printf( "* 3. 查询宿舍信息 *\n" );
printf( "* 4. 插入宿舍信息 *\n" );
printf( "* 5. 删除宿舍信息 *\n" );
printf( "* 0. 退出系统 *\n" );
printf( "**************************************\n" );
printf("请输入菜单(0-5):");
scanf("%d", &choice);
if (choice<0 || choice>5) {
system("cls");
printf("输入数字不对,请重新!\n");
printf("\n");
Menu();
}
}
//打印学生信息
void Display(linklist &L) {
int i;
printf("姓名 学号 房号\n");
for (i = 0; i<L.length; i++)
printf("%-10s %-2d %5d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
}
//返回主界面
void Ret() {
char c;
fflush(stdin);
printf("\n");
printf("请按任意键进入主界面:");
scanf("%c", &c);
system("cls");
}
//创建学生信息表
void Create(linklist &L) {
int i = 2;
char ch;
if (L.length >= L.listsize) { //判断学生的人数是否超过初值,如果超过,则重新分配
stu *newbase;
newbase = (stu*)realloc(L.elem, (N + increase) * sizeof(stu));
L.elem = newbase;
L.listsize += increase;
}
printf("********开始创建学生信息**********\n");
printf("\n");
printf("请输入第1个学生的信息\n");
printf("请输入姓名:");
fflush(stdin); // 清空输入缓冲区,得到正确的输入数据
gets(stud.name); //输入一行字符串(姓名)
printf("请输入学号:");
scanf("%d", &stud.num);
printf("请输入房号:");
scanf("%d", &stud.room);
ch = getchar();
strcpy(L.elem[L.length].name, stud.name);
L.elem[L.length].num = stud.num;
L.elem[L.length].room = stud.room;
L.length++;
printf("\n");
printf("是否继续输入?<y/n>:");
scanf("%c", &ch);
printf("\n");
while (ch == 'y') {
printf("请输入第%d个学生的信息\n", i);
printf("请输入姓名:");
fflush(stdin); // 清空输入缓冲区,得到正确的输入数据
gets(stud.name); //输入一行字符串(姓名)
printf("请输入学号:");
scanf("%d", &stud.num);
printf("请输入房号:");
scanf("%d", &stud.room);
strcpy(L.elem[L.length].name, stud.name);
L.elem[L.length].num = stud.num;
L.elem[L.length].room = stud.room;
i++;
L.length=i-1;
ch = getchar();
printf("\n");
printf("是否继续输入?<y/n>:");
scanf("%c", &ch);
printf("\n");
}
if (ch == 'n')
system("cls");
}
//按姓名排序(采用冒泡排序)
void sort1(linklist &L) {
int i, j;
stu temp;
for (i = 0; i<L.length - 1; i++)
for (j = 0; j<L.length-1-i; j++)
if (strcmp(L.elem[j].name, L.elem[j+1].name)>0) {
temp = L.elem[j];
L.elem[j] = L.elem[j+1];
L.elem[j+1] = temp;
}
}
//按学号排序(采用折半插入排序)
void sort2(linklist &L) {
int i, j, mid, low, high;
stu temp;
for (i = 1; i < L.length; i++) {
if(L.elem[i].num<L.elem[i-1].num) {
temp = L.elem[i];
low = 0;
high = i-1;
while (low <= high) {
mid = (low + high) / 2;
if (temp.num < L.elem[mid].num)
high = mid - 1;
else
low = mid + 1;
}
for (j = i - 1; j >= high+1; j--)
L.elem[j+1]=L.elem[j];
L.elem[high+1]=temp;
}
}
}
//按房号排序(采用简单选择排序)
void sort3(linklist &L) {
int i,j,k;
stu temp;
for(i=0; i<L.length-1; i++) {
k=i;
for(j=i+1; j<L.length; j++)
if(L.elem[j].room<L.elem[k].room)
k=j;
if(k!=i){
temp = L.elem[i];
L.elem[i] = L.elem[k];
L.elem[k] = temp;
}
}
}
//排序函数
void Sort(linklist &L) {
int c;
printf("请输入排序的方式(1:按名字排序,2:按学号排序,3:按房号排序):");
scanf("%d", &c);
switch (c) {
case 1:
sort1(L);
if (L.length == 0) {
printf("已无学生记录!\n");
Ret();
Menu();
} else {
printf("按姓名排序:\n");
Display(L);
Ret(); //调用返回主界面
Menu();
}
break;
case 2:
sort2(L);
if (L.length == 0) {
printf("已无学生记录!\n");
Ret();
Menu();
} else {
printf("按学号排序:\n");
Display(L);
Ret(); //调用返回主界面
Menu();
}
break;
case 3:
sort3(L);
if (L.length == 0) {
printf("已无学生记录!\n");
Ret();
Menu();
} else {
printf("按房号排序:\n");
Display(L);
Ret(); //调用返回主界面
Menu();
}
break;
default:
break;
}
}
//选择是否继续查找
int Select() {
char ch;
scanf("%c", &ch);
printf("是否继续查找?<y/n>:");
fflush(stdin);
scanf("%c", &ch);
if (ch == 'y') {
system("cls");
return 1;
} else
return 0;
}
//按姓名从小到大查找(采用二分查找)
void search1(linklist &L) {
if (L.length == 0) {
printf("已无学生记录!\n");
Ret();
Menu();
} else {
int low = 0, high = L.length, mid, flag = 0;
printf("\n");
printf("按姓名查找-->请输入要查找的姓名:");
char a[15], ch;
scanf("%s", a);
while (low <= high) {
mid = (low + high) / 2;
if (strcmp(a, L.elem[mid].name) == 0) {
flag = 1;
break;
} else if (strcmp(a, L.elem[mid].name)>0)
low = mid + 1;
else
high = mid - 1;
}
if (flag == 1) {
printf("查找成功-->该学生信息为:\n");
printf("姓名 学号 房号\n");
printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
if (Select())
search1(L);
else {
system("cls");
Menu();
}
} else {
printf("该学生不存在!");
if (Select()) search1(L);
else {
system("cls");
Menu();
}
}
}
}
//按学号从小到大查找(采用二分查找)
void search2(linklist &L) {
if (L.length == 0) {
printf("\n");
printf("已无学生记录!\n");
Ret();
Menu();
} else {
int low = 0, high = L.length, mid, flag = 0;
int n;
char ch;
printf("\n");
printf("按学号查找-->请输入要查找的学号:");
scanf("%d", &n);
while (low <= high) {
mid = (low + high) / 2;
if (n == L.elem[mid].num) {
flag = 1;
break;
} else if (n>L.elem[mid].num)
low = mid + 1;
else
high = mid - 1;
}
if (flag == 1) {
printf("查找成功----->该学生信息为:\n");
printf("姓名 学号 房号\n");
printf("%-1s0 %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
if (Select())
search2(L);
else {
system("cls");
Menu();
}
} else {
printf("该学生不存在!");
if (Select())
search2(L);
else {
system("cls");
Menu();
}
}
}
}
//按房号从小到大查找(采用二分查找)
void search3(linklist &L) {
if (L.length == 0) { //此函数功能为:返回主界面
printf("\n");
printf("已无学生记录!\n");
Ret();
Menu();
} else {
int low = 0, high = L.length, mid, flag = 0;//flag作为标志符,为1则表示查找成功,否则没有所要查找的学生
int m;
char ch;
printf("\n");
printf("按房号查找-->请输入要查找的房号:");
scanf("%d", &m);
while (low <= high) {
mid = (low + high) / 2;
if (m == L.elem[mid].room) {
flag = 1;
break;
} else if (m>L.elem[mid].room)
low = mid + 1;
else
high = mid - 1;
}
if (flag == 1) {
printf("查找成功-->该学生信息为:\n");
printf("姓名 学号 房号\n");
printf("%-10s %-2d %-5d\n", L.elem[mid].name, L.elem[mid].num, L.elem[mid].room);
if (Select()) //调用判断函数1
search3(L);
else {
system("cls");
Menu();
}
} else {
printf("该学生不存在!");
if (Select()) //调用判断函数2
search3(L);
else {
system("cls");
Menu();
}
}
}
}
//查找函数
void Search(linklist &L) {
int c;
printf("请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):");
scanf("%d", &c);
switch (c) {
case 1:
sort1(L);
search1(L);
break;//先进行二分查找排序
case 2:
sort2(L);
search2(L);
break;
case 3:
sort3(L);
search3(L);
break;
default:
break;
}
}
//按学号从小到大插入该学生
void Insert(linklist &L) {
int i, j, k;
char ch;
printf("\n");
printf("插入的学生信息为:\n");
printf("姓名:");
fflush(stdin);// 清空输入缓冲区,得到正确的输入数据
gets(stud.name);
printf("学号:");
scanf("%d", &stud.num);
printf("房号:");
scanf("%d", &stud.room);
if (L.length == 0) {
strcpy(L.elem[L.length].name, stud.name);
L.elem[L.length].num = stud.num;
L.elem[L.length].room = stud.room;
}
for (i = 0; i<L.length; i++) {
if (stud.num<L.elem[i].num) {
k = i;
for (j = L.length; j>k; j--)
L.elem[j] = L.elem[j - 1];
strcpy(L.elem[k].name, stud.name);
L.elem[k].num = stud.num;
L.elem[k].room = stud.room;
break;
} else {
strcpy(L.elem[L.length].name, stud.name);
L.elem[L.length].num = stud.num;
L.elem[L.length].room = stud.room;
}
}
L.length++;
fflush(stdin);
printf("\n");
printf("是否继续插入?<y/n>:");
scanf("%c", &ch);
if (ch == 'y') Insert(L);
else system("cls");
}
//按学号删除该学生
void Delete(linklist &L) {
int i, j, k = -1;
char ch;
printf("\n");
printf("\n");
printf("请输入要删除学生的学号:");
scanf("%d", &stud.num);
for (i = 0; i<L.length; i++) {
if (stud.num == L.elem[i].num) {
printf("该学生的信息为:\n");
printf("姓名:%s \n学号:%d \n房号:%d\n", L.elem[i].name, L.elem[i].num, L.elem[i].room);
k = i;
for (j = k; j<L.length - 1; j++)
L.elem[j] = L.elem[j + 1];
printf("已成功删除\n");
break;
}
}
if (i >= L.length) printf("该学生不存在\n");
if (k >= 0)L.length--;
fflush(stdin);
printf("\n");
printf("是否继续删除操作?<y/n>:");
scanf("%c", &ch);
system("cls");
if (ch == 'y') Delete(L);
else system("cls");
}
//主函数
int main() {
linklist L; //定义线性表 L
Init(L);
Menu(); //调用主菜单函数
while (choice != 0) {
system("cls");
switch (choice) {
case 1:
Create(L); //调用线性表创建函数
Menu();
break;
case 2:
Sort(L);
break;//调用排序函数
case 3:
Search(L);
break;//调用查找函数进行(二分)查找
case 4:
sort2(L); //调用学号排序函数
Insert(L); //按学号序列插入
system("cls");
printf("插入后的学生信息:\n");
Display(L);
Ret();
Menu();
break;
case 5:
Delete(L); //调用删除函数
if (L.length == 0) {
printf("\n");
printf("学生记录已被删除完!\n");
Ret();
Menu();
} else {
printf("显示删除后的学生信息:\n");
Display(L);
Ret();
Menu();
}
break;
}
}
}
C语言用指针
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //#include<windows.h>
- #define N 40 //线性表存储空间的初始分配量
- #define increase 10 //线性表存储空间的分配量增量
- int choice; //定义全局变量
- typedef struct {
- char name[20];
- int num; //学号和房号都为整型
- int room;
- } stu;
- stu stud;
- typedef struct {
- int length; //当前长度
- stu *elem; //存储空间基址
- int listsize; //当前分配的存储容量
- } linklist;
- //线性表初始化
- void Init(linklist *L) {
- L->length = 0;
- L->elem = (stu *)malloc(N * sizeof(stu));
- L->listsize = N;
- }
- //操作菜单
- void Menu() {
- printf( "**************************************\n" );
- printf( "*** 欢迎进入宿舍管理系统 ***\n" );
- printf( "**************************************\n" );
- printf( "* 1. 新建宿舍名单 *\n" );
- printf( "* 2. 排序宿舍信息 *\n" );
- printf( "* 3. 查询宿舍信息 *\n" );
- printf( "* 4. 插入宿舍信息 *\n" );
- printf( "* 5. 删除宿舍信息 *\n" );
- printf( "* 0. 退出系统 *\n" );
- printf( "**************************************\n" );
- printf("请输入菜单(0-5):");
- scanf("%d", &choice);
- if (choice<0 || choice>5) {
- system("cls");
- printf("输入数字不对,请重新!\n");
- printf("\n");
- Menu();
- }
- }
- //打印学生信息
- void Display(linklist *L) {
- int i;
- printf("姓名 学号 房号\n");
- for (i = 0; i<L->length; i++)
- printf("%-10s %-2d %5d\n", L->elem[i].name, L->elem[i].num, L->elem[i].room);
- }
- //返回主界面
- void Ret() {
- char c;
- fflush(stdin);
- printf("\n");
- printf("请按任意键进入主界面:");
- scanf("%c", &c);
- system("cls");
- }
- //创建学生信息表
- void Create(linklist *L) {
- int i = 2;
- char ch;
- if (L->length >= L->listsize) { //判断学生的人数是否超过初值,如果超过,则重新分配
- stu *newbase;
- newbase = (stu*)realloc(L->elem, (N + increase) * sizeof(stu));
- L->elem = newbase;
- L->listsize += increase;
- }
- printf("********开始创建学生信息**********\n");
- printf("\n");
- printf("请输入第1个学生的信息\n");
- printf("请输入姓名:");
- fflush(stdin); // 清空输入缓冲区,得到正确的输入数据
- //gets(stud.name); //输入一行字符串(姓名)
- fgets(stud.name, 20, stdin);
- printf("请输入学号:");
- scanf("%d", &stud.num);
- printf("请输入房号:");
- scanf("%d", &stud.room);
- ch = getchar();
- strcpy(L->elem[L->length].name, stud.name);
- L->elem[L->length].num = stud.num;
- L->elem[L->length].room = stud.room;
- L->length++;
- printf("\n");
- printf("是否继续输入?<y/n>:");
- scanf("%c", &ch);
- printf("\n");
- while (ch == 'y') {
- printf("请输入第%d个学生的信息\n", i);
- printf("请输入姓名:");
- fflush(stdin); // 清空输入缓冲区,得到正确的输入数据
- //gets(stud.name); //输入一行字符串(姓名)
- fgets(stud.name, 20, stdin);
- printf("请输入学号:");
- scanf("%d", &stud.num);
- printf("请输入房号:");
- scanf("%d", &stud.room);
- strcpy(L->elem[L->length].name, stud.name);
- L->elem[L->length].num = stud.num;
- L->elem[L->length].room = stud.room;
- i++;
- L->length=i-1;
- ch = getchar();
- printf("\n");
- printf("是否继续输入?<y/n>:");
- scanf("%c", &ch);
- printf("\n");
- }
- if (ch == 'n')
- system("cls");
- }
- //按姓名排序(采用冒泡排序)
- void sort1(linklist *L) {
- int i, j;
- stu temp;
- for (i = 0; i<L->length - 1; i++)
- for (j = 0; j<L->length-1-i; j++)
- if (strcmp(L->elem[j].name, L->elem[j+1].name)>0) {
- temp = L->elem[j];
- L->elem[j] = L->elem[j+1];
- L->elem[j+1] = temp;
- }
- }
- //按学号排序(采用折半插入排序)
- void sort2(linklist *L) {
- int i, j, mid, low, high;
- stu temp;
- for (i = 1; i < L->length; i++) {
- if(L->elem[i].num<L->elem[i-1].num) {
- temp = L->elem[i];
- low = 0;
- high = i-1;
- while (low <= high) {
- mid = (low + high) / 2;
- if (temp.num < L->elem[mid].num)
- high = mid - 1;
- else
- low = mid + 1;
- }
- for (j = i - 1; j >= high+1; j--)
- L->elem[j+1]=L->elem[j];
- L->elem[high+1]=temp;
- }
- }
- }
- //按房号排序(采用简单选择排序)
- void sort3(linklist *L) {
- int i,j,k;
- stu temp;
- for(i=0; i<L->length-1; i++) {
- k=i;
- for(j=i+1; j<L->length; j++)
- if(L->elem[j].room<L->elem[k].room)
- k=j;
- if(k!=i){
- temp = L->elem[i];
- L->elem[i] = L->elem[k];
- L->elem[k] = temp;
- }
- }
- }
- //排序函数
- void Sort(linklist *L) {
- int c;
- printf("请输入排序的方式(1:按名字排序,2:按学号排序,3:按房号排序):");
- scanf("%d", &c);
- switch (c) {
- case 1:
- sort1(L);
- if (L->length == 0) {
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- printf("按姓名排序:\n");
- Display(L);
- Ret(); //调用返回主界面
- Menu();
- }
- break;
- case 2:
- sort2(L);
- if (L->length == 0) {
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- printf("按学号排序:\n");
- Display(L);
- Ret(); //调用返回主界面
- Menu();
- }
- break;
- case 3:
- sort3(L);
- if (L->length == 0) {
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- printf("按房号排序:\n");
- Display(L);
- Ret(); //调用返回主界面
- Menu();
- }
- break;
- default:
- break;
- }
- }
- //选择是否继续查找
- int Select() {
- char ch;
- scanf("%c", &ch);
- printf("是否继续查找?<y/n>:");
- fflush(stdin);
- scanf("%c", &ch);
- if (ch == 'y') {
- system("cls");
- return 1;
- } else
- return 0;
- }
- //按姓名从小到大查找(采用二分查找)
- void search1(linklist *L) {
- if (L->length == 0) {
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- int low = 0, high = L->length, mid, flag = 0;
- printf("\n");
- printf("按姓名查找-->请输入要查找的姓名:");
- char a[15];//, ch;
- scanf("%s", a);
- while (low <= high) {
- mid = (low + high) / 2;
- if (strcmp(a, L->elem[mid].name) == 0) {
- flag = 1;
- break;
- } else if (strcmp(a, L->elem[mid].name)>0)
- low = mid + 1;
- else
- high = mid - 1;
- }
- if (flag == 1) {
- printf("查找成功-->该学生信息为:\n");
- printf("姓名 学号 房号\n");
- printf("%-10s %-2d %-5d\n", L->elem[mid].name, L->elem[mid].num, L->elem[mid].room);
- if (Select())
- search1(L);
- else {
- system("cls");
- Menu();
- }
- } else {
- printf("该学生不存在!");
- if (Select()) search1(L);
- else {
- system("cls");
- Menu();
- }
- }
- }
- }
- //按学号从小到大查找(采用二分查找)
- void search2(linklist *L) {
- if (L->length == 0) {
- printf("\n");
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- int low = 0, high = L->length, mid, flag = 0;
- int n;
- //char ch;
- printf("\n");
- printf("按学号查找-->请输入要查找的学号:");
- scanf("%d", &n);
- while (low <= high) {
- mid = (low + high) / 2;
- if (n == L->elem[mid].num) {
- flag = 1;
- break;
- } else if (n>L->elem[mid].num)
- low = mid + 1;
- else
- high = mid - 1;
- }
- if (flag == 1) {
- printf("查找成功----->该学生信息为:\n");
- printf("姓名 学号 房号\n");
- printf("%-1s0 %-2d %-5d\n", L->elem[mid].name, L->elem[mid].num, L->elem[mid].room);
- if (Select())
- search2(L);
- else {
- system("cls");
- Menu();
- }
- } else {
- printf("该学生不存在!");
- if (Select())
- search2(L);
- else {
- system("cls");
- Menu();
- }
- }
- }
- }
- //按房号从小到大查找(采用二分查找)
- void search3(linklist *L) {
- if (L->length == 0) { //此函数功能为:返回主界面
- printf("\n");
- printf("已无学生记录!\n");
- Ret();
- Menu();
- } else {
- int low = 0, high = L->length, mid, flag = 0;//flag作为标志符,为1则表示查找成功,否则没有所要查找的学生
- int m;
- //char ch;
- printf("\n");
- printf("按房号查找-->请输入要查找的房号:");
- scanf("%d", &m);
- while (low <= high) {
- mid = (low + high) / 2;
- if (m == L->elem[mid].room) {
- flag = 1;
- break;
- } else if (m>L->elem[mid].room)
- low = mid + 1;
- else
- high = mid - 1;
- }
- if (flag == 1) {
- printf("查找成功-->该学生信息为:\n");
- printf("姓名 学号 房号\n");
- printf("%-10s %-2d %-5d\n", L->elem[mid].name, L->elem[mid].num, L->elem[mid].room);
- if (Select()) //调用判断函数1
- search3(L);
- else {
- system("cls");
- Menu();
- }
- } else {
- printf("该学生不存在!");
- if (Select()) //调用判断函数2
- search3(L);
- else {
- system("cls");
- Menu();
- }
- }
- }
- }
- //查找函数
- void Search(linklist *L) {
- int c;
- printf("请输入查找的方式(1:按名字查找,2:按学号查找,3:按房号查找):");
- scanf("%d", &c);
- switch (c) {
- case 1:
- sort1(L);
- search1(L);
- break;//先进行二分查找排序
- case 2:
- sort2(L);
- search2(L);
- break;
- case 3:
- sort3(L);
- search3(L);
- break;
- default:
- break;
- }
- }
- //按学号从小到大插入该学生
- void Insert(linklist *L) {
- int i, j, k;
- char ch;
- printf("\n");
- printf("插入的学生信息为:\n");
- printf("姓名:");
- fflush(stdin);// 清空输入缓冲区,得到正确的输入数据
- //gets(stud.name);
- fgets(stud.name, 20, stdin);
- printf("学号:");
- scanf("%d", &stud.num);
- printf("房号:");
- scanf("%d", &stud.room);
- if (L->length == 0) {
- strcpy(L->elem[L->length].name, stud.name);
- L->elem[L->length].num = stud.num;
- L->elem[L->length].room = stud.room;
- }
- for (i = 0; i<L->length; i++) {
- if (stud.num<L->elem[i].num) {
- k = i;
- for (j = L->length; j>k; j--)
- L->elem[j] = L->elem[j - 1];
- strcpy(L->elem[k].name, stud.name);
- L->elem[k].num = stud.num;
- L->elem[k].room = stud.room;
- break;
- } else {
- strcpy(L->elem[L->length].name, stud.name);
- L->elem[L->length].num = stud.num;
- L->elem[L->length].room = stud.room;
- }
- }
- L->length++;
- fflush(stdin);
- printf("\n");
- printf("是否继续插入?<y/n>:");
- scanf("%c", &ch);
- if (ch == 'y') Insert(L);
- else system("cls");
- }
- //按学号删除该学生
- void Delete(linklist *L) {
- int i, j, k = -1;
- char ch;
- printf("\n");
- printf("\n");
- printf("请输入要删除学生的学号:");
- scanf("%d", &stud.num);
- for (i = 0; i<L->length; i++) {
- if (stud.num == L->elem[i].num) {
- printf("该学生的信息为:\n");
- printf("姓名:%s \n学号:%d \n房号:%d\n", L->elem[i].name, L->elem[i].num, L->elem[i].room);
- k = i;
- for (j = k; j<L->length - 1; j++)
- L->elem[j] = L->elem[j + 1];
- printf("已成功删除\n");
- break;
- }
- }
- if (i >= L->length) printf("该学生不存在\n");
- if (k >= 0)L->length--;
- fflush(stdin);
- printf("\n");
- printf("是否继续删除操作?<y/n>:");
- scanf("%c", &ch);
- system("cls");
- if (ch == 'y') Delete(L);
- else system("cls");
- }
- //主函数
- int main() {
- linklist L; //定义线性表 L
- Init(&L);
- Menu(); //调用主菜单函数
- while (choice != 0) {
- system("cls");
- switch (choice) {
- case 1:
- Create(&L); //调用线性表创建函数
- Menu();
- break;
- case 2:
- Sort(&L);
- break;//调用排序函数
- case 3:
- Search(&L);
- break;//调用查找函数进行(二分)查找
- case 4:
- sort2(&L); //调用学号排序函数
- Insert(&L); //按学号序列插入
- system("cls");
- printf("插入后的学生信息:\n");
- Display(&L);
- Ret();
- Menu();
- break;
- case 5:
- Delete(&L); //调用删除函数
- if (L.length == 0) {
- printf("\n");
- printf("学生记录已被删除完!\n");
- Ret();
- Menu();
- } else {
- printf("显示删除后的学生信息:\n");
- Display(&L);
- Ret();
- Menu();
- }
- break;
- }
- }
- }
复制代码
|
|