数据结构之线性表(顺序表,单链表)——图书管理系统

本文介绍了如何使用数据结构中的顺序表和单链表来实现图书管理系统的数据存储。通过代码示例展示了如何操作这些数据结构,并提供了测试数据。读者需要将book.txt文件与代码放在同一目录下运行。
摘要由CSDN通过智能技术生成

顺序表:

代码如下:

  1 #include<iostream>
  2 #include<fstream>
  3 #include<string>
  4 #include<iomanip>
  5 using namespace std;
  6 #define OK 1
  7 #define ERROR 0
  8 #define OVERFLOW -2
  9 typedef int Status;
 10 typedef int ElemType;
 11 
 12 #define MAXSIZE 100        
 13 struct Book
 14 {
 15     string id;
 16     string name;
 17     double price;
 18 };
 19 typedef struct 
 20 {
 21     Book *elem; 
 22     int length; 
 23 }SqList;
 24 
 25 Status InitList_Sq(SqList &L) 
 26 { 
 27     
 28     L.elem=new Book[MAXSIZE]; 
 29     if (!L.elem)
 30         exit(OVERFLOW); 
 31     L.length = 0; 
 32     return OK;
 33 }
 34 
 35 Status GetElem(SqList L, int i, Book &e) 
 36 {
 37     if (i < 1 || i > L.length)
 38         return ERROR; 
 39     e=L.elem[i-1];                                                       
 40     return OK;
 41 }
 42 
 43 int LocateElem_Sq(SqList L, double e) 
 44 {
 45     for (int i = 0; i < L.length; i++)
 46         if (L.elem[i].price == e)
 47             return i + 1;
 48     return 0;
 49 }
 50 
 51 Status ListInsert_Sq(SqList &L, int i, Book e) 
 52 { 
 53     if ((i < 1) || (i > L.length + 1))
 54         return ERROR; 
 55     if (L.length == MAXSIZE)
 56         return ERROR; 
 57        for(int j=L.length-1;j>=i-1;j--)
 58          L.elem[j+1]=L.elem[j]; 
 59         L.elem[i-1]=e;                                                        
 60     ++L.length; 
 61     return OK;
 62 }
 63 
 64 Status ListDelete_Sq(SqList &L, int i) 
 65 { 
 66     if ((i < 1) || (i > L.length))
 67         return ERROR;
 68     for (int j = i; j < L.length; j++)
 69         L.elem[j - 1] = L.elem[j]; 
 70     --L.length; 
 71     return OK;
 72 }
 73 
 74 int main() {
 75     SqList L;
 76     int i = 0, temp, a, c, choose;
 77     double price;
 78     Book e;
 79     string head_1, head_2, head_3;
 80     cout << "1. 建立\n";
 81     cout << "2. 输入\n";
 82     cout << "3. 取值\n";
 83     cout << "4. 查找\n";
 84     cout << "5. 插入\n";
 85     cout << "6. 删除\n";
 86     cout << "7. 输出\n";
 87     cout << 
  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值