顺序表的增删改查操作——增

#include<iostream>
using namespace std;
#define maxSize 100
typedef struct{
    int data[maxSize];
    int length;
}Sqlist;//定义一个顺序表 
int findElem(Sqlist L,int x);
void insertElem(Sqlist &L,int x);
int main(){
    Sqlist L;
    L.length=8;
    int x;
    cout<<"请输入顺序表的元素,按从小到大输入:"<<endl;
    for(int i=0;i<8;i++){
        cin>>L.data[i];
    }
    cout<<"请输入需要插入的元素:"<<endl;
    cin>>x;
    insertElem(L,x);
    for(int i=0;i<L.length;i++){
        cout<<L.data[i]<<endl;
    }
    return 0;
}
int findElem(Sqlist L,int x){
    int i;
    for(i=0;i<L.length;i++){
        if(x<L.data[i]){
            return i;
        }
    }
    return i;//如果顺序表中不存在比x大的数,则返回i 
}
void insertElem(Sqlist &L,int x){
    int p,i;    
    p=findElem(L,x);    
    for(i=L.length-1;i>=p;i--){
        L.data[i+1]=L.data[i];
    }
    L.data[p]=x;
    (L.length)++;//插入完成之后,顺序表的长度增加1 
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是利用 C 语言用顺序表的形式实现宾馆客房管理系统的代码,共九个模块: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 客房信息结构体 typedef struct { char num[10]; // 房间号 char type[10]; // 房间类型 float money; // 价格 int flag; // 是否入住,0表示未入住,1表示已入住 } Room; // 定义全局变量 Room *list; // 客房信息数组 int size = 0; // 客房信息数组大小 float total_income = 0; // 已入住客房的总收入 // 函数声明 void Menu(); void CreateList(); void InsertList(int i); int LocateList(char *num); void AlterList(int i); void DeleteList(int i); void PrintList(); void Quit(); int main() { Menu(); return 0; } void Menu() { int choice, i; char num[10], type[10]; float money; while (1) { printf("\n请选择操作:\n"); printf("1. 创建表\n"); printf("2. 插入记录\n"); printf("3. 查询记录\n"); printf("4. 修改记录\n"); printf("5. 删除记录\n"); printf("6. 显示所有记录\n"); printf("7. 退出\n"); scanf("%d", &choice); switch (choice) { case 1: CreateList(); break; case 2: printf("请输入房间号:"); scanf("%s", num); printf("请输入房间类型:"); scanf("%s", type); printf("请输入价格:"); scanf("%f", &money); InsertList(size); strcpy(list[size - 1].num, num); strcpy(list[size - 1].type, type); list[size - 1].money = money; list[size - 1].flag = 0; printf("添加成功!\n"); break; case 3: printf("请输入要查询的房间号:"); scanf("%s", num); i = LocateList(num); if (i >= 0) { printf("房间号:%s\n", list[i].num); printf("房间类型:%s\n", list[i].type); printf("价格:%.2f\n", list[i].money); printf("是否入住:%s\n", list[i].flag ? "是" : "否"); } else { printf("文件中没有该信息!\n"); } break; case 4: printf("请输入要修改的房间号:"); scanf("%s", num); i = LocateList(num); if (i >= 0) { AlterList(i); printf("修改成功!\n"); } else { printf("系统中无此记录!\n"); } break; case 5: printf("请输入要删除的房间号:"); scanf("%s", num); i = LocateList(num); if (i >= 0) { DeleteList(i); printf("删除成功!\n"); } else { printf("通讯录中没有该信息!\n"); } break; case 6: PrintList(); break; case 7: Quit(); break; default: printf("输入有误,请重新输入!\n"); } } } void CreateList() { printf("请输入客房数量:"); scanf("%d", &size); list = (Room*) malloc(sizeof(Room) * size); printf("请输入每个客房的信息(房间号、房间类型、价格):\n"); for (int i = 0; i < size; i++) { scanf("%s %s %f", list[i].num, list[i].type, &list[i].money); list[i].flag = 0; } printf("客房信息创建成功!\n"); } void InsertList(int i) { size++; list = (Room*) realloc(list, sizeof(Room) * size); for (int j = size - 1; j > i; j--) { list[j] = list[j - 1]; } } int LocateList(char *num) { for (int i = 0; i < size; i++) { if (strcmp(list[i].num, num) == 0) { return i; } } return -1; } void AlterList(int i) { int choice; char num[10], type[10]; float money; printf("请选择要修改的数据项:\n"); printf("1. 房间号\n"); printf("2. 房间类型\n"); printf("3. 价格\n"); printf("4. 是否入住\n"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入新的房间号:"); scanf("%s", num); strcpy(list[i].num, num); break; case 2: printf("请输入新的房间类型:"); scanf("%s", type); strcpy(list[i].type, type); break; case 3: printf("请输入新的价格:"); scanf("%f", &money); list[i].money = money; break; case 4: list[i].flag = !list[i].flag; if (list[i].flag) { total_income += list[i].money; } else { total_income -= list[i].money; } break; default: printf("输入有误,请重新输入!\n"); } } void DeleteList(int i) { for (int j = i; j < size - 1; j++) { list[j] = list[j + 1]; } size--; list = (Room*) realloc(list, sizeof(Room) * size); } void PrintList() { printf("房间号\t房间类型\t价格\t是否入住\n"); for (int i = 0; i < size; i++) { printf("%s\t%s\t\t%.2f\t%s\n", list[i].num, list[i].type, list[i].money, list[i].flag ? "是" : "否"); } printf("已入住客房的总收入:%.2f\n", total_income); } void Quit() { free(list); printf("程序已退出!\n"); exit(0); } ``` 这个程序可以通过菜单操作实现客房信息的增删改查、显示所有记录以及计算已入住客房的总收入。其中,第一个模块是主函数 `main()`,第二个模块是菜单函数 `Menu()`,第三个模块是创建表函数 `CreateList()`,第四个模块是插入记录函数 `InsertList(int i)`,第五个模块是查询记录函数 `LocateList(char *num)`,第六个模块是修改记录函数 `AlterList(int i)`,第七个模块是删除记录函数 `DeleteList(int i)`,第八个模块是显示所有记录函数 `PrintList()`,第九个模块是退出函数 `Quit()`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值