问答题 请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,函数void Insert(node*q)使程序能完成如下功能:从键盘输入一行字符,调用该函数建立反序单链表,再输出整个链表。 注意:请勿修改主函数main和其他函数中的任何内容,只需在横线处编写适当代码,也不要删除或移动“//****found****”。 //proj2.cpp #include <iostream> using namespace std; struct node { char data; node * link; } * head; //链表首指针 void Insert (node * q) //将节点插入链表首部 { //******** found******** ______; head = q; } int main ( ) { char ch; node * p; head = NULL; cout <<"Please input the string" <<endl; while((ch=cin.get()) !='/n') { //******** found******** ______; //用new为节点p动态分配存储空间 p ->data = ch; //******** found******** ______; //插入该节点 } p=head; while (p!=NULL) { cout <<p -> data; p=p->link; } cout << endl; return 0; }
【正确答案】(1)q->link=head (2)p=new node (3)Insert(p)
【答案解析】[考点] 主要考查的是Insert函数,其中涉及结构体及链表知识。 [解析] (1)主要考查考生对链表的掌握,函数功能是将节点插入链表首部后。在插入链表首部,即将该节点的指针域指向头节点head。 (2)主要考查考生对动态分配的掌握,用new为节点p动态分配存储空间,节点p为node类型,因此直接使用newnode分配空间并将首地址赋给p即可。 (3)程序要求插入该节点,应调用Insert函数,并将指针p作为函数的实参。