问答题
请使用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作为函数的实参。