用C++链表写一个乐库管理系统,能够实现按照查找次数形成热门歌单的功能
时间: 2024-03-27 12:36:04 浏览: 15
好的,下面是一个简单的用C++链表实现乐库管理系统的示例代码,其中包括按照查找次数形成热门歌单的功能。具体实现过程如下:
```cpp
#include <iostream>
using namespace std;
// 歌曲结构体
struct Song {
string name; // 歌曲名称
int count; // 歌曲被查找的次数
Song* next; // 指向下一个结点的指针
};
// 链表类
class SongList {
private:
Song* head; // 头结点指针
public:
// 构造函数
SongList() {
head = new Song;
head->next = NULL;
}
// 添加歌曲
void addSong(string name) {
Song* p = head;
while (p->next != NULL) {
p = p->next;
}
Song* newSong = new Song;
newSong->name = name;
newSong->count = 0;
newSong->next = NULL;
p->next = newSong;
}
// 查找歌曲
bool searchSong(string name) {
Song* p = head->next;
while (p != NULL) {
if (p->name == name) {
p->count++; // 查找次数加1
return true;
}
p = p->next;
}
return false;
}
// 显示所有歌曲
void display() {
Song* p = head->next;
while (p != NULL) {
cout << "歌曲名称:" << p->name << endl;
cout << "查找次数:" << p->count << endl;
cout << endl;
p = p->next;
}
}
// 形成热门歌单
void hotList() {
Song* p = head->next;
Song* maxSong = p;
while (p != NULL) {
if (p->count > maxSong->count) {
maxSong = p;
}
p = p->next;
}
cout << "热门歌曲:" << maxSong->name << endl;
}
};
int main() {
SongList sl;
sl.addSong("歌曲A");
sl.addSong("歌曲B");
sl.addSong("歌曲C");
sl.addSong("歌曲D");
sl.addSong("歌曲E");
sl.searchSong("歌曲A");
sl.searchSong("歌曲B");
sl.searchSong("歌曲A");
sl.searchSong("歌曲B");
sl.searchSong("歌曲A");
sl.searchSong("歌曲A");
sl.display();
sl.hotList();
return 0;
}
```
上述代码中,首先定义了一个 `Song` 结构体,用来存储歌曲的名称和查找次数。然后定义了一个 `SongList` 类,其中包括添加歌曲、查找歌曲、显示所有歌曲和形成热门歌单等方法。
在 `addSong` 方法中,我们首先遍历链表,找到最后一个结点,然后创建一个新的结点,将歌曲名称和查找次数初始化,将新结点插入到链表的末尾。
在 `searchSong` 方法中,我们从链表的第一个结点开始遍历,如果找到了指定的歌曲,就将其查找次数加1,并返回 `true`,否则返回 `false`。
在 `display` 方法中,我们遍历整个链表,输出每个歌曲的名称和查找次数。
在 `hotList` 方法中,我们遍历整个链表,找到查找次数最多的歌曲,将其输出为热门歌曲。
在 `main` 函数中,首先创建一个 `SongList` 对象,并添加了5首歌曲。然后进行了多次查找歌曲的操作,最后调用了 `display` 和 `hotList` 方法,将所有歌曲和热门歌曲输出到屏幕上。
以上就是一个简单的用C++链表实现乐库管理系统的示例代码,希望对您有所帮助。