m0_73783566 2023-06-13 09:57 采纳率: 0%
浏览 15

关于#c++#的问题:C++数据结构 二叉树 单链表建一个图书管理系统 删除图书操作有问题

C++数据结构 二叉树 单链表建一个图书管理系统 删除图书操作有问题,怎么也改不出来<<endl;

#include <iostream>
#include<string>
using namespace std;

typedef string ElemType;
typedef int Status;
string anything;

#define TRUE 1;
#define FALSE 0;
#define OK 1;
#define ERROR 0;
#define MAXSIZE 999999;

typedef struct Book {
    string bookID; //书号
    string bookName; //书名
    string writerName; //作者
    int booknumnow; //现库存量
    string biglei; //大类
    string smalllei; //小类
}Book, * Bookk; //书本类型

typedef struct LNode //链表
{
    Book* book;
    struct LNode* next;
}LNode, * LinkList;
typedef struct FiveTNode//每一层有五类 
{
    ElemType data;
    struct FiveTNode* child1, * child2, * child3, * child4, * child5;
    LNode* lnode;
}FiveTNode, * FiveTree;
Status CreateFiveTree(FiveTree& T, FiveTree& A, FiveTree& B, FiveTree& C, FiveTree& D, FiveTree& E)//创建树 
{
    T = new FiveTNode;//生成根结点
    T->data = "图书";
    T->child1 = new FiveTNode;
    T->child2 = new FiveTNode;
    T->child3 = new FiveTNode;
    T->child4 = new FiveTNode;
    T->child5 = new FiveTNode;

    A = T->child1;
    B = T->child2;
    C = T->child3;
    D = T->child4;
    E = T->child5;

    A->data = "文化";
    B->data = "自然科学";
    C->data = "中国名著";
    D->data = "外国名著";
    E->data = "综合类书籍";

    A->child1 = new FiveTNode;
    A->child2 = new FiveTNode;
    A->child3 = new FiveTNode;
    A->child4 = new FiveTNode;
    A->child5 = new FiveTNode;

    A->child1->data = "哲学";
    A->child2->data = "历史";
    A->child3->data = "政治";
    A->child4->data = "国学";
    A->child5->data = "民族";

    B->child1 = new FiveTNode;
    B->child2 = new FiveTNode;
    B->child3 = new FiveTNode;
    B->child4 = new FiveTNode;
    B->child5 = new FiveTNode;

    B->child1->data = "生物";
    B->child2->data = "物种";
    B->child3->data = "地理";
    B->child4->data = "基因";
    B->child5->data = "生命";

    C->child1 = new FiveTNode;
    C->child2 = new FiveTNode;
    C->child3 = new FiveTNode;
    C->child4 = new FiveTNode;
    C->child5 = new FiveTNode;

    C->child1->data = "古代神话";
    C->child2->data = "古代奇幻";
    C->child3->data = "现代小说";
    C->child4->data = "古代小说";
    C->child5->data = "现代散文";

    D->child1 = new FiveTNode;
    D->child2 = new FiveTNode;
    D->child3 = new FiveTNode;
    D->child4 = new FiveTNode;
    D->child5 = new FiveTNode;

    D->child1->data = "古代小说";
    D->child2->data = "现代小说";
    D->child3->data = "现代散文";
    D->child4->data = "古代散文";
    D->child5->data = "童话";

    E->child1 = new FiveTNode;
    E->child2 = new FiveTNode;
    E->child3 = new FiveTNode;
    E->child4 = new FiveTNode;
    E->child5 = new FiveTNode;

    E->child1->data = "交通运输";
    E->child2->data = "工业技术";
    E->child3->data = "航空航天";
    E->child4->data = "环境科学";
    E->child5->data = "安全科学";

    A->child1->lnode = new LNode;
    A->child1->lnode->book = new Book;
    A->child2->lnode = new LNode;
    A->child2->lnode->book = new Book;
    A->child3->lnode = new LNode;
    A->child3->lnode->book = new Book;
    A->child4->lnode = new LNode;
    A->child4->lnode->book = new Book;
    A->child5->lnode = new LNode;
    A->child5->lnode->book = new Book;

    B->child1->lnode = new LNode;
    B->child1->lnode->book = new Book;
    B->child2->lnode = new LNode;
    B->child2->lnode->book = new Book;
    B->child3->lnode = new LNode;
    B->child3->lnode->book = new Book;
    B->child4->lnode = new LNode;
    B->child4->lnode->book = new Book;
    B->child5->lnode = new LNode;
    B->child5->lnode->book = new Book;

    C->child1->lnode = new LNode;
    C->child1->lnode->book = new Book;
    C->child2->lnode = new LNode;
    C->child2->lnode->book = new Book;
    C->child3->lnode = new LNode;
    C->child3->lnode->book = new Book;
    C->child4->lnode = new LNode;
    C->child4->lnode->book = new Book;
    C->child5->lnode = new LNode;
    C->child5->lnode->book = new Book;

    D->child1->lnode = new LNode;
    D->child1->lnode->book = new Book;
    D->child2->lnode = new LNode;
    D->child2->lnode->book = new Book;
    D->child3->lnode = new LNode;
    D->child3->lnode->book = new Book;
    D->child4->lnode = new LNode;
    D->child4->lnode->book = new Book;
    D->child5->lnode = new LNode;
    D->child5->lnode->book = new Book;

    E->child1->lnode = new LNode;
    E->child1->lnode->book = new Book;
    E->child2->lnode = new LNode;
    E->child2->lnode->book = new Book;
    E->child3->lnode = new LNode;
    E->child3->lnode->book = new Book;
    E->child4->lnode = new LNode;
    E->child4->lnode->book = new Book;
    E->child5->lnode = new LNode;
    E->child5->lnode->book = new Book;

    A->child1->lnode->book->bookName = "《哲学起步》";
    A->child1->lnode->book->bookID = "1";
    A->child1->lnode->book->writerName = "邓晓芒";
    A->child1->lnode->book->booknumnow = 11;
    A->child1->lnode->next = NULL;

    A->child2->lnode->book->bookName = "《中国历史文化课》";
    A->child2->lnode->book->bookID = "2";
    A->child2->lnode->book->writerName = "余秋雨";
    A->child2->lnode->book->booknumnow = 11;
    A->child2->lnode->next = NULL;

    A->child3->lnode->book->bookName = "《万古江河》";
    A->child3->lnode->book->bookID = "3";
    A->child3->lnode->book->writerName = "朱卓文";
    A->child3->lnode->book->booknumnow = 23;
    A->child3->lnode->next = NULL;

    A->child4->lnode->book->bookName = "《国学知识大全》";
    A->child4->lnode->book->bookID = "4";
    A->child4->lnode->book->writerName = "吕思勉";
    A->child4->lnode->book->booknumnow = 34;
    A->child4->lnode->next = NULL;

    A->child5->lnode->book->bookName = "《民族文化史》";
    A->child5->lnode->book->bookID = "5";
    A->child5->lnode->book->writerName = "季玉春";
    A->child4->lnode->book->booknumnow = 26;
    A->child5->lnode->next = NULL;

    B->child1->lnode->book->bookName = "《万物简史》";
    B->child1->lnode->book->bookID = "6";
    B->child1->lnode->book->writerName = "达尔文";
    B->child1->lnode->book->booknumnow = 34;
    B->child1->lnode->next = NULL;

    B->child2->lnode->book->bookName = "《物种起源》";
    B->child2->lnode->book->bookID = "7";
    B->child2->lnode->book->writerName = "萨根";
    B->child2->lnode->book->booknumnow = 34;
    B->child2->lnode->next = NULL;

    B->child3->lnode->book->bookName = "《神秘的宇宙》";
    B->child3->lnode->book->bookID = "8";
    B->child3->lnode->book->writerName = "理查德";
    B->child3->lnode->book->booknumnow = 18;
    B->child3->lnode->next = NULL;

    B->child4->lnode->book->bookName = "《自私的基因》";
    B->child4->lnode->book->bookID = "9";
    B->child4->lnode->book->writerName = "吉姆";
    B->child4->lnode->book->booknumnow = 27;
    B->child4->lnode->next = NULL;

    B->child5->lnode->book->bookName = "《神奇的量子力量》";
    B->child5->lnode->book->bookID = "10";
    B->child5->lnode->book->writerName = "萨利";
    B->child5->lnode->book->booknumnow = 27;
    B->child5->lnode->next = NULL;

    C->child1->lnode->book->bookName = "《山海经》";
    C->child1->lnode->book->bookID = "11";
    C->child1->lnode->book->writerName = "邹衍";
    C->child1->lnode->book->booknumnow = 54;
    C->child1->lnode->next = NULL;

    C->child2->lnode->book->bookName = "《西游记》";
    C->child2->lnode->book->bookID = "12";
    C->child2->lnode->book->writerName = "吴承恩";
    C->child2->lnode->book->booknumnow = 32;
    C->child2->lnode->next = NULL;

    C->child3->lnode->book->bookName = "《团圆》";
    C->child3->lnode->book->bookID = "13";
    C->child3->lnode->book->writerName = "张爱玲";
    C->child3->lnode->book->booknumnow = 23;
    C->child3->lnode->next = NULL;

    C->child4->lnode->book->bookName = "《三国演义》";
    C->child4->lnode->book->bookID = "14";
    C->child4->lnode->book->writerName = "罗贯中";
    C->child4->lnode->book->booknumnow = 56;
    C->child4->lnode->next = NULL;

    C->child5->lnode->book->bookName = "《朝花夕拾》";
    C->child5->lnode->book->bookID = "15";
    C->child5->lnode->book->writerName = "鲁迅";
    C->child5->lnode->book->booknumnow = 32;
    C->child5->lnode->next = NULL;

    D->child1->lnode->book->bookName = "《神圣的罗马帝国》";
    D->child1->lnode->book->bookID = "16";
    D->child1->lnode->book->writerName = "新海月";
    D->child1->lnode->book->booknumnow = 24;
    D->child1->lnode->next = NULL;

    D->child2->lnode->book->bookName = "《追风筝的人》";
    D->child2->lnode->book->bookID = "17";
    D->child2->lnode->book->writerName = "卡勒得";
    D->child2->lnode->book->booknumnow = 46;
    D->child2->lnode->next = NULL;

    D->child3->lnode->book->bookName = "《论时机》";
    D->child3->lnode->book->bookID = "18";
    D->child3->lnode->book->writerName = "培根";
    D->child3->lnode->book->booknumnow = 23;
    D->child3->lnode->next = NULL;

    D->child4->lnode->book->bookName = "《诗学》";
    D->child4->lnode->book->bookID = "19";
    D->child4->lnode->book->writerName = "亚里士多德";
    D->child4->lnode->book->booknumnow = 35;
    D->child4->lnode->next = NULL;

    D->child5->lnode->book->bookName = "《安徒生童话》";
    D->child5->lnode->book->bookID = "20";
    D->child5->lnode->book->writerName = "安徒生";
    D->child5->lnode->book->booknumnow = 41;
    D->child5->lnode->next = NULL;

    E->child1->lnode->book->bookName = "《道路交通安全法》";
    E->child1->lnode->book->bookID = "21";
    E->child1->lnode->book->writerName = "郑彩城";
    E->child1->lnode->book->booknumnow = 12;
    E->child1->lnode->next = NULL;

    E->child2->lnode->book->bookName = "《大国重工》";
    E->child2->lnode->book->bookID = "22";
    E->child2->lnode->book->writerName = "吴国忠";
    E->child2->lnode->book->booknumnow = 27;
    E->child2->lnode->next = NULL;

    E->child3->lnode->book->bookName = "《中国航空》";
    E->child3->lnode->book->bookID = "23";
    E->child3->lnode->book->writerName = "沈海军";
    E->child3->lnode->book->booknumnow = 30;
    E->child3->lnode->next = NULL;

    E->child4->lnode->book->bookName = "《环境科学与工程》";
    E->child4->lnode->book->bookID = "24";
    E->child4->lnode->book->writerName = "李思雨";
    E->child4->lnode->book->booknumnow = 21;
    E->child4->lnode->next = NULL;

    E->child5->lnode->book->bookName = "《安全科学你我需知》";
    E->child5->lnode->book->bookID = "25";
    E->child5->lnode->book->writerName = "刘俊";
    E->child5->lnode->book->booknumnow = 58;
    E->child5->lnode->next = NULL;

    return OK;
}

void OutputP(LNode *pa1, LNode *pa2, LNode *pa3, LNode * pa4, LNode * pa5)
{
    //pa1->book = new Book;
    //pa2->book = new Book;
    //pa3->book = new Book;
    //pa4->book = new Book;
    //pa5->book = new Book;
    while (pa1)
    {
        cout << pa1->book->bookID << " " << pa1->book->bookName << " " << pa1->book->writerName << endl;
        pa1 = pa1->next;
    }
    while (pa2)
    {
        cout << pa2->book->bookID << " " << pa2->book->bookName << " " << pa2->book->writerName << endl;
        pa2 = pa2->next;
    }
    while (pa3)
    {
        cout << pa3->book->bookID << " " << pa3->book->bookName << " " << pa3->book->writerName << endl;
        pa3 = pa3->next;
    }
    while (pa4)
    {
        cout << pa4->book->bookID << " " << pa4->book->bookName << " " << pa4->book->writerName << endl;
        pa4 = pa4->next;
    }
    while (pa5)
    {
        cout << pa5->book->bookID << " " << pa5->book->bookName << " " << pa5->book->writerName << endl;
        pa5 = pa5->next;
    }
}

//显示所有图书
void showbook(FiveTree& T, FiveTree& A, FiveTree& B, FiveTree& C, FiveTree& D, FiveTree& E)
{
    system("cls"); //清屏
    LNode *pa1, *pa2, *pa3,* pa4,* pa5,* pb1,* pb2,* pb3, *pb4, *pb5, *pc1, *pc2, *pc3, *pc4, *pc5, *pd1, *pd2, *pd3, *pd4, *pd5, *pe1, *pe2, *pe3, *pe4, *pe5 = new LNode;
    pa1 = A->child1->lnode;
    pa2 = A->child2->lnode;
    pa3 = A->child3->lnode;
    pa4 = A->child4->lnode;
    pa5 = A->child5->lnode;

    pb1 = B->child1->lnode;
    pb2 = B->child2->lnode;
    pb3 = B->child3->lnode;
    pb4 = B->child4->lnode;
    pb5 = B->child5->lnode;

    pc1 = C->child1->lnode;
    pc2 = C->child2->lnode;
    pc3 = C->child3->lnode;
    pc4 = C->child4->lnode;
    pc5 = C->child5->lnode;

    pd1 = D->child1->lnode;
    pd2 = D->child2->lnode;
    pd3 = D->child3->lnode;
    pd4 = D->child4->lnode;
    pd5 = D->child5->lnode;

    pe1 = E->child1->lnode;
    pe2 = E->child2->lnode;
    pe3 = E->child3->lnode;
    pe4 = E->child4->lnode;
    pe5 = E->child5->lnode;
    cout << " ***************************************" << endl;
    OutputP(pa1, pa2, pa3, pa4, pa5);
    OutputP(pb1, pb2, pb3, pb4, pb5);
    OutputP(pc1, pc2, pc3, pc4, pc5);
    OutputP(pd1, pd2, pd3, pd4, pd5);
    OutputP(pe1, pe2, pe3, pe4, pe5);
    cout << " ***************************************" << endl;
    cout << "输入任意字符返回!" << endl;
    cin >> anything;
    return;
}

void delete_(LNode* p, string book_delete_name)
{
    while (p->next)
    {
        if (p->next->book->bookName == book_delete_name)
        {
            cout << "删除的具体信息如下" << endl;
            cout << "ID:" << p->next->book->bookID << "书名: " << p->next->book->bookName << "作者: " << p->next->book->writerName << endl;
            p->next = p->next->next;
            delete (p->next);
            cout << "删除成功" << endl;
        }
        p = p->next;
    }
}
void delete_findID(FiveTree& T, FiveTree& A, FiveTree& B, FiveTree& C, FiveTree& D, FiveTree& E, string book_delete_name)//查找ID
{
    string book_delete_ID;
    LNode* pa1, * pa2, * pa3, * pa4, * pa5, * pb1, * pb2, * pb3, * pb4, * pb5, * pc1, * pc2, * pc3, * pc4, * pc5, * pd1, * pd2, * pd3, * pd4, * pd5, * pe1, * pe2, * pe3, * pe4, * pe5 = new LNode;
    pa1 = A->child1->lnode;
    pa2 = A->child2->lnode;
    pa3 = A->child3->lnode;
    pa4 = A->child4->lnode;
    pa5 = A->child5->lnode;

    pb1 = B->child1->lnode;
    pb2 = B->child2->lnode;
    pb3 = B->child3->lnode;
    pb4 = B->child4->lnode;
    pb5 = B->child5->lnode;

    pc1 = C->child1->lnode;
    pc2 = C->child2->lnode;
    pc3 = C->child3->lnode;
    pc4 = C->child4->lnode;
    pc5 = C->child5->lnode;

    pd1 = D->child1->lnode;
    pd2 = D->child2->lnode;
    pd3 = D->child3->lnode;
    pd4 = D->child4->lnode;
    pd5 = D->child5->lnode;

    pe1 = E->child1->lnode;
    pe2 = E->child2->lnode;
    pe3 = E->child3->lnode;
    pe4 = E->child4->lnode;
    pe5 = E->child5->lnode;

    delete_(pa1, book_delete_name);
    delete_(pa2, book_delete_name);
    delete_(pa3, book_delete_name);
    delete_(pa4, book_delete_name);
    delete_(pa5, book_delete_name);
    delete_(pb1, book_delete_name);
    delete_(pb2, book_delete_name);
    delete_(pb3, book_delete_name);
    delete_(pb4, book_delete_name);
    delete_(pb5, book_delete_name);
    delete_(pc1, book_delete_name);
    delete_(pc2, book_delete_name);
    delete_(pc3, book_delete_name);
    delete_(pc4, book_delete_name);
    delete_(pc5, book_delete_name);
    delete_(pd1, book_delete_name);
    delete_(pd2, book_delete_name);
    delete_(pd3, book_delete_name);
    delete_(pd4, book_delete_name);
    delete_(pd5, book_delete_name);
    delete_(pe1, book_delete_name);
    delete_(pe2, book_delete_name);
    delete_(pe3, book_delete_name);
    delete_(pe4, book_delete_name);
    delete_(pe5, book_delete_name);
}
Status ListDelete(FiveTree& T, FiveTree& A, FiveTree& B, FiveTree& C, FiveTree& D, FiveTree& E)//删除
{
    system("cls"); //清屏
    int password;//输入密码验证身份
    cout << "************************************" << endl;
    cout << "*为证明身份,请输入密码:          *" << endl;
    cout << "************************************" << endl;
    cin >> password;
    if (password == 1379)//密码输入正确
    {
        system("cls"); //清屏
        showbook(T, A, B, C, D, E);
        system("cls"); //清屏
        cout << "请输入删除书籍的书名" << endl;
        string book_delete_name;
        cin >> book_delete_name;
        delete_findID(T, A, B, C, D, E, book_delete_name);
    }
    else
    {
        //输入了其他的字符
        system("cls"); //清屏
        cout << " ***************************************" << endl;
        cout << "密码错误!请返回!若非管理员请勿操作此功能!" << endl;
        cout << " ***************************************" << endl;
    }
    return OK;
}


int main()
{
    FiveTree T, A, B, C, D, E;
    CreateFiveTree(T, A, B, C, D, E);
    cout << "请在显示的菜单里复制书名!" << endl;
    showbook(T, A, B,C,D,E);
    ListDelete(T,A,B,C,D,E);
    showbook(T, A, B, C, D, E);
}


  • 写回答

2条回答 默认 最新

  • ABZS 2023-06-13 10:48
    关注
    
    
    ```c++
    Status DeleteBook(FiveTree T, string biglei, string smalllei, string bookName) {
        FiveTree p = T;
        while (p != NULL) {
            if (p->data == biglei) {
                FiveTree q = p->child1;
                while (q != NULL) {
                    if (q->data == smalllei) {
                        LNode* r = q->lnode;
                        LNode* pre = NULL;
                        while (r != NULL) {
                            if (r->book->bookName == bookName) {
                                if (pre == NULL) {
                                    q->lnode = r->next;
                                } else {
                                    pre->next = r->next;
                                }
                                delete r->book;
                                delete r;
                                return OK;
                            }
                            pre = r;
                            r = r->next;
                        }
                        cout << "Book not found." << endl;
                        return ERROR;
                    }
                    q = q->child5;
                }
                cout << "Small category not found." << endl;
                return ERROR;
            }
            p = p->child5;
        }
        cout << "Big category not found." << endl;
        return ERROR;
    }
    
    
    

    ```

    评论

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请