修一个fifo链表存储读取QImage
时间: 2023-07-25 16:48:23 浏览: 73
fifo.rar_自己写一个fifo
好的,下面是一个简单的FIFO链表存储读取QImage的示例代码:
```cpp
#include <QtCore>
#include <QtGui>
class Node {
public:
QImage image;
Node* next;
};
class ImageList {
public:
ImageList() {
head = nullptr;
tail = nullptr;
}
~ImageList() {
while (head != nullptr) {
Node* temp = head;
head = head->next;
delete temp;
}
}
void addImage(const QString& fileName) {
QImage image(fileName);
if (!image.isNull()) {
Node* node = new Node;
node->image = image;
node->next = nullptr;
if (tail == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
}
QImage getImage() {
if (head != nullptr) {
Node* node = head;
head = head->next;
QImage image = node->image;
delete node;
return image;
} else {
return QImage();
}
}
private:
Node* head;
Node* tail;
};
```
在这个示例代码中,我们仍然使用 Node 类表示链表中的节点,节点包含一个 QImage 对象和一个指向下一个节点的指针。然后,我们定义了一个 ImageList 类,这个类包含一个指向链表头和尾的指针,以及一些用于添加和获取链表中的 QImage 对象的成员函数。在 addImage() 函数中,我们读取指定文件名的 QImage 对象,并将其存储到一个新的节点中,然后将这个节点添加到链表的末尾。在 getImage() 函数中,我们从链表的头部取出一个节点,获取节点中存储的 QImage 对象,然后删除这个节点,并返回 QImage 对象。
在实际使用中,您可以通过调用 ImageList 的 addImage() 函数来添加新的 QImage 对象,然后通过调用 getImage() 函数来获取链表中的 QImage 对象。下面是一个简单的示例:
```cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ImageList imageList;
imageList.addImage("image1.png");
imageList.addImage("image2.png");
imageList.addImage("image3.png");
QImage image1 = imageList.getImage();
QImage image2 = imageList.getImage();
QImage image3 = imageList.getImage();
return app.exec();
}
```
在这个示例中,我们先创建了一个 ImageList 对象,然后调用 addImage() 函数来添加三个 QImage 对象。最后,我们通过调用 getImage() 函数来获取链表中的 QImage 对象,并将它们存储到三个 QImage 变量中。需要注意的是,每次调用 getImage() 函数都会从链表的头部取出一个节点,因此获取的 QImage 对象的顺序是按照添加顺序的先后顺序的。
阅读全文