C++双指针插入链表

问题描述 投票:0回答:0

我最近有一项作业涉及删除表示为指向单页内存的双指针的内存块。

基本上,我首先有一个

Page
指针数组。每个
Page
都有一个
next_free
prev_free
字段,它们都指向
Page*
。我正在尝试将
Page*
页面添加到
Page*
指针的链接列表中。

我正在浏览

head
pageArray[0]
指向的链表。遍历这个页面列表,根据它的
Page*
.
在合适的地方插入输入
value

指针
struct Page {
    int value;
    Page* next_free;
    Page* prev_free;
};

Page* pageArray[10]

void insertPage(Page* page) {
        Page** currPage = &pageArray[0];
        while (*currPage) {
            double value = (*currPage) -> value;
            if (value < page -> value) {
                currPage = &(*currPage) -> next_free; 
            }
            else {
                break;
            } 
        }

        Page** prevPage = &(*currPage) -> prev_free;
        std::cout << "Value of current block: " << (*currPage)->value << std::endl;
        (*prevPage) -> next_free = page;
        std::cout << "Value of current block after changing previous block: " << (*currPage)->value << std::endl;
        (*currPage) -> prev_free = page;
    }

我添加了 print 语句以查看会发生什么,似乎在执行

(*prevBlock) -> next_free = page
行时,
(*currBlock)
指针发生了变化。我以为它会存储上一个块的地址,我可以在不改变
(*prevBlock)
的情况下改变
(*currPage)

这样做的正确方法是什么?为什么

(*currBlock)
会改变?

c++ pointers linked-list doubly-linked-list
© www.soinside.com 2019 - 2024. All rights reserved.