请打开考生文件夹下的解决方案文件pmj3,其中声明了一个单向链表类sList。sList的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Prepend。在main函数中给出了一组测试数据,此时程序的输出应为: B->A->

admin2019-04-24  33

问题 请打开考生文件夹下的解决方案文件pmj3,其中声明了一个单向链表类sList。sList的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Prepend。在main函数中给出了一组测试数据,此时程序的输出应为:
    B->A->
    ###
    A->
    ###
    A->
    ###
    exiting inner block
    exiting outer block
    注意:只在函数Prepend的“//********333********”和“//********666********”之间填入若干语句,不要改动程序中的其他内容。
//SList.h
struct sListItem{
  char data;
  sListTtem*next;
};
class sList;{
public:
  sList():h(0){)
//0表示空链表
    ~sList();
    void Prepend(char c);
//在链表前端加入元素
  void Del();
//删除链表首元素
    sListItem*  First()  const  {
return h;}
//返回链表首元素
  void Print()const;
//打印链表内容
  void Release();
//销毁链表
private:
    sListItem*h;
//链表头
};
void writeToFile(const char*  );
//main.cpp
#include
#include"sList.h"
using namespace std;
sList::~sList()
{
  Release();
}
void sList::Prepend(char c)
{
    //********333********
    //********666********
}
void sList::Del()
{
    sListItem*temp=h;
    h=h->next;
    delete temp;
}
void sList::Print()const
{
  sListItem*temp=h;
  while(temp!=0)
//判断是否到达链表尾部
  {
    cout  <data  << "
->  ";
    temp=ernp->next;
  }
  cout  <<  "\n###"  <}
void sList::Release()
{
  while(h!=0)
    Del();
}
int main()
{
  sList*ptr;
  {
    sList obj;
    obj.Prepend(’A’);
    obj.Prepend(’B’);
    0bj.Print();
    0bj.Del();
    obj.Print();
    ptr=&obj ;
    ptr->Print();
    cout<<"exiting inner block"<  }
  cout<<"exiting outer block"<  writeToFile(" ");
  return 0;
}

选项

答案SListItem * temp=new SListItem; //动态分配空间给结构体temp的指针temp->data=C: //65 C赋值于结构体temp成员data temp->next=h: //把h赋值于结构temp体成员next h=temp; //把temp赋值给h.即h指向temp指向的空间

解析 主要考查考生对链表的掌握,成员函数Prepend的功能是在链表头部加入一个新元素。形参c是一个char型变量,因此要定义一个新的结构体指针temp,并给它分配sListItem类型空间,把形参c中的值赋给temp的数据域,并使temp通过指针链接到链表上。
转载请注明原文地址:https://jikaoti.com/ti/qYt0FFFM
0

最新回复(0)