C++ 使用格式打印输出(第x页)->;在cpp中

C++ 使用格式打印输出(第x页)->;在cpp中,c++,C++,请提供注释中所述的函数append、printList和delete_evens的实现。您将处理一个页面链接列表,其中每个节点(页面)分别使用next和prev指针链接到其下一个和上一个节点(页面)。请注意,第一个节点(头)的前一个节点为空。以类似的方式,最后一个节点的下一个节点也将为NULL 预期产出如下: Created PageList: (page1)->(page2)->(page3)->(page4)->(page5)->(page6)->(pag

请提供注释中所述的函数append、printList和delete_evens的实现。您将处理一个页面链接列表,其中每个节点(页面)分别使用next和prev指针链接到其下一个和上一个节点(页面)。请注意,第一个节点(头)的前一个节点为空。以类似的方式,最后一个节点的下一个节点也将为NULL

预期产出如下:

Created PageList:
(page1)->(page2)->(page3)->(page4)->(page5)->(page6)->(page7)->(page8)->(page9)->(page10)->(page11)->(page12)->(page13)->(page14)->(page15)->(page16)->(page17)->(page18)->(page19)->(page20)->(page21)->(page22)->(page23)->(page24)->(page25)->(page26)->(page27)->(page28)->(page29)->(page30)->(page31)->(page32)->(page33)->(page34)->(page35)->(page36)->(page37)->(page38)->(page39)->(page40)->(page41)->(page42)->(page43)->(page44)->(page45)->(page46)->(page47)->(page48)->(page49)->(page50)->
Updated PageList:
(page1)->(page3)->(page5)->(page7)->(page9)->(page11)->(page13)->(page15)->(page17)->(page19)->(page21)->(page23)->(page25)->(page27)->(page29)->(page31)->(page33)->(page35)->(page37)->(page39)->(page41)->(page43)->(page45)->(page47)->(page49)->
#include <iostream>
#include <string>

using namespace std;

class Page {
public:
  int page_number = 0;
  string page_content = "";
  Page *next = NULL;
  Page *prev = NULL; // previous
};

class PageList {

public:
  Page *head = NULL; // point to the first page

  // append a page to the end of the list
  void append(int page_number, string page_content) {
    Page *first;
    first = new Page();
    first->page_content = page_content;
    first->next = NULL;
    first->prev = NULL;
    first->page_number = page_number;
    if (head == NULL) {
      head = first;
    } else {
      Page *second = head;
      while (second->next != NULL) {
        second = second->next;
      }
      second->next = first;
    }
  }

  // print all the elements of the list (pages) with the given format
  void print list(Page *node, bool forward) {
    while (node != NULL) {
      cout << node->page_content << " ";
      node = node->next;
    }
    cout << endl;
  }

  void delete_evens() { // delete the pages with even page_number
    Page *first = head;
    Page *q = NULL;
    while (first != NULL) {
      if (first->page_number % 2 == 0) {
        if (q == NULL) {
          head = first->next;
          first = first->next;
        } else {
          q->next = first->next;
          first->next = NULL;
          first = q->next;
        }
      } else {
        if (q == NULL) {
          q = first;
          first = first->next;
        } else {
          q = q->next;
          first = first->next;
        }
      }
    }
  }

  PageList(int pages) noexcept // consteructor
  {
    head = NULL;
    for (int i = 1; i <= pages; i++) {
      append(i, "(page" + to_string(i));
    }
    cout << "Created PageList:" << endl;
    printList(head, true);
    delete_evens();
    cout << "Updated PageList:" << endl;
    printList(head, true);
  }
};

int main() {
  PageList list(50);
  return 0;
}
我得到的结果是:

Created PageList:
(page)->1 (page)->2 (page)->3 (page)->4 (page)->5 (page)->6 (page)->7 (page)->8 (page)->9 (page)->10 (page)->11 (page)->12 (page)->13 (page)->14 (page)->15 (page)->16 (page)->17 (page)->18 (page)->19 (page)->20 (page)->21 (page)->22 (page)->23 (page)->24 (page)->25 (page)->26 (page)->27 (page)->28 (page)->29 (page)->30 (page)->31 (page)->32 (page)->33 (page)->34 (page)->35 (page)->36 (page)->37 (page)->38 (page)->39 (page)->40 (page)->41 (page)->42 (page)->43 (page)->44 (page)->45 (page)->46 (page)->47 (page)->48 (page)->49 (page)->50 
Updated PageList:
(page)->1 (page)->3 (page)->5 (page)->7 (page)->9 (page)->11 (page)->13 (page)->15 (page)->17 (page)->19 (page)->21 (page)->23 (page)->25 (page)->27 (page)->29 (page)->31 (page)->33 (page)->35 (page)->37 (page)->39 (page)->41 (page)->43 (page)->45 (page)->47 (page)->49 
我的代码如下:

Created PageList:
(page1)->(page2)->(page3)->(page4)->(page5)->(page6)->(page7)->(page8)->(page9)->(page10)->(page11)->(page12)->(page13)->(page14)->(page15)->(page16)->(page17)->(page18)->(page19)->(page20)->(page21)->(page22)->(page23)->(page24)->(page25)->(page26)->(page27)->(page28)->(page29)->(page30)->(page31)->(page32)->(page33)->(page34)->(page35)->(page36)->(page37)->(page38)->(page39)->(page40)->(page41)->(page42)->(page43)->(page44)->(page45)->(page46)->(page47)->(page48)->(page49)->(page50)->
Updated PageList:
(page1)->(page3)->(page5)->(page7)->(page9)->(page11)->(page13)->(page15)->(page17)->(page19)->(page21)->(page23)->(page25)->(page27)->(page29)->(page31)->(page33)->(page35)->(page37)->(page39)->(page41)->(page43)->(page45)->(page47)->(page49)->
#include <iostream>
#include <string>

using namespace std;

class Page {
public:
  int page_number = 0;
  string page_content = "";
  Page *next = NULL;
  Page *prev = NULL; // previous
};

class PageList {

public:
  Page *head = NULL; // point to the first page

  // append a page to the end of the list
  void append(int page_number, string page_content) {
    Page *first;
    first = new Page();
    first->page_content = page_content;
    first->next = NULL;
    first->prev = NULL;
    first->page_number = page_number;
    if (head == NULL) {
      head = first;
    } else {
      Page *second = head;
      while (second->next != NULL) {
        second = second->next;
      }
      second->next = first;
    }
  }

  // print all the elements of the list (pages) with the given format
  void print list(Page *node, bool forward) {
    while (node != NULL) {
      cout << node->page_content << " ";
      node = node->next;
    }
    cout << endl;
  }

  void delete_evens() { // delete the pages with even page_number
    Page *first = head;
    Page *q = NULL;
    while (first != NULL) {
      if (first->page_number % 2 == 0) {
        if (q == NULL) {
          head = first->next;
          first = first->next;
        } else {
          q->next = first->next;
          first->next = NULL;
          first = q->next;
        }
      } else {
        if (q == NULL) {
          q = first;
          first = first->next;
        } else {
          q = q->next;
          first = first->next;
        }
      }
    }
  }

  PageList(int pages) noexcept // consteructor
  {
    head = NULL;
    for (int i = 1; i <= pages; i++) {
      append(i, "(page" + to_string(i));
    }
    cout << "Created PageList:" << endl;
    printList(head, true);
    delete_evens();
    cout << "Updated PageList:" << endl;
    printList(head, true);
  }
};

int main() {
  PageList list(50);
  return 0;
}
#包括
#包括
使用名称空间std;
类页{
公众:
整版页码=0;
字符串页面_content=“”;
第*页下一页=空;
Page*prev=NULL;//上一页
};
类页面列表{
公众:
Page*head=NULL;//指向第一页
//在列表末尾追加一页
无效附加(整型页码,字符串页码内容){
第一页*;
first=新页面();
第一->页面内容=页面内容;
first->next=NULL;
第一个->上一个=空;
第一->页码=页码;
if(head==NULL){
头=第一;
}否则{
第二页=页眉;
while(秒->下一步!=NULL){
秒=秒->下一步;
}
第二->下一步=第一步;
}
}
//以给定格式打印列表(页面)的所有元素
作废打印列表(第*页节点,bool forward){
while(节点!=NULL){
下一步无法翻页内容;
}
cout页码(编号%2==0){
if(q==NULL){
头=第一个->下一个;
第一个=第一个->下一个;
}否则{
q->next=第一个->下一个;
first->next=NULL;
first=q->next;
}
}否则{
if(q==NULL){
q=第一;
第一个=第一个->下一个;
}否则{
q=q->next;
第一个=第一个->下一个;
}
}
}
}
页面列表(整型页面)无异常//常量
{
head=NULL;
对于(int i=1;i
#包括
#包括
使用名称空间std;
// -------------------------------------------------------------------
类页{
公众:
整版页码=0;
字符串页面_content=“”;
第*页下一页=空;
Page*prev=NULL;//上一页
};
类页面列表{
公众:
Page*head=NULL;//指向第一页
//在列表末尾追加一页
无效附加(整型页码,字符串页码内容){
第一页*;
first=新页面();
第一->页面内容=页面内容;
first->next=NULL;
第一个->上一个=空;
第一->页码=页码;
if(head==NULL){
头=第一;
}
否则{
第二页=页眉;
while(秒->下一步!=NULL){
秒=秒->下一步;
}
第二->下一步=第一步;
}
}
//以给定格式打印列表(页面)的所有元素
无效打印列表(第*页节点,bool forward){
while(节点!=NULL){
coutnext;
first->next=NULL;
first=q->next;
}
}
其他的
{
if(q==NULL)
{
q=第一;
第一个=第一个->下一个;
}
其他的
{
q=q->next;
第一个=第一个->下一个;
}
}
}
}
页面列表(整型页面)无异常//常量
{
head=NULL;

对于(inti=1;iYou应该标记代码,这真的很难理解read@Linus行。。发布的代码不会创建您所说的输出。@DavidThornley您能帮忙吗?我不知道该怎么办。@KevalPatel,还要学习吗?