问答题
请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程pmj3,其中声明了一个单向链表类sList。sLst的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Prepend。在main函数中给出了一组测试数据,此时程序的输出应为: B一>A一> ### A一> ### A一> ### exiting inner block exiting outer block 注意:只在函数Prepend的“//**********333**********”和“//**********666**********”之间填入若干语句,不要改动程序中的其他内容。//SList.hstruct sListItem{ char data; sListItem*next;};class sList{public: sList():h(0){)//0表示空链表 ~sList(); void Prepend(char c);//在链表前端加入元素 void Del();//删除链表首元素 sListItem*First()const{returnh;}//返回链表首元素 void Print()const;//打印链表内容 void Release();//销毁链表private: sListItem* h;//链表头};void writeToFile(const char* );//main.cpp#include<iostream>#include”sList.h”us ing 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<<temp一>data<<”一>”; temp=temp一>next;} cout<<”\n###”<<endl;}void sList::Release(){ while(h!=0) Del();}int main(){ sLisL*ptr; { sList obj; obj.Prepend(’A’); obj.Prepend(’B’); obj.Print(); obj.Del(); obj.Print(); pfir=&obj; pLr一>Print(); tout<<”exiting inner block”<<end1; } couL<<”exiting outer block”<<endl; writeToFile(””); return 0;}
【正确答案】正确答案:sLiStItem*temp=new sLiStItern; //动态分配空间给结构体ternp的指针 terap一>data=c; //把c赋值于结构体temp成员data ternp一>next=h; //把h赋值于结构ternp体成员next h=temp; //把temp赋值给h,即h指向temp指向的空间
【答案解析】解析:主要考查考生对链表的掌握,成员函数Prepend的功能是在链表头部加入一个新元素。形参c是一个char型变量,因此要定义一个新的结构体指针temp,并给它分配sListItem类型空间,把形参c中的值赋给temp的数据域,并使temp通过指针链接到链表上。