区块链技术是比特币的基础。在区块链中,每个区块指向前一个区块,构成链式列表,新区块只能接在链 尾,不允许在中间插入或删除。下面代码实现插入区块添加函数,则横线处填写( )。
//区块(节点)
struct Block {
int index; // 区块编号(高度)
string data; // 区块里保存的数据
Block* prev; // 指向前一个区块
Block(int idx, const string& d, Block* p) : index(idx), data(d), prev(p) {}
};
// 区块链
struct Blockchain {
Block* tail;
// 初始化
void init() {
tail = new Block(0, "Genesis Block", nullptr);
}
// 插入新区块
void addBlock(const string& data) {
_______________________ //在此处填入代码
}
// 释放内存
void clear() {
Block* cur = tail;
while (cur != nullptr) {
Block* p = cur->prev;
delete cur;
cur = p;
}
tail = nullptr;
}
};
- A. 1 Block* newBlock = new Block(tail->index + 1, data, tail); 2 tail = newBlock->prev;
- B. 1 Block* newBlock = new Block(tail->index + 1, data, tail); 2 tail = newBlock;
- C. 1 Block* newBlock = new Block(tail->index + 1, data, tail->prev); 2 tail = newBlock;
- D. 1 Block* newBlock = new Block(tail->index + 1, data, tail->prev); 2 tail = newBlock->prev;
正确答案:B