()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]设有定义#define I

19 查阅

()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]设有定义 #define ITEM struct item #define SIZE sizeof(ITEM) ITEM { int num; ITEM *next; }; ITEM *head=NULL; 下述函数定义实现按插表尾形式(即每一新表元素插入至当前所生成链表的表尾之后)生成一个正向线性链表。最后指向所生成链表表头的指针作为函数值返回。为生成一个线性链表,要求输入一批整型数据,并以-1作为结束标志。请填空完善程序。 ITEM *gene(ITEM *head) { ITEM *temp,*tail;/*tail指向当前链表尾结点*/ int intno; printf("Enter integer NO.,-1 to stop:\n"); scanf("%d",&intno); while (intno!=-1) { temp=(____(1)_____)malloc(SIZE); temp->num=intno; if (head==_____(2)_____) /*空表*/ { head=temp; tail=______(3)______; } else /*非空表*/ { ____(4)_______=temp; tail=temp; } scanf("%d",&intno); } return (_______(5)_______);

参考答案:

()(1)ITEM * (2)NULL (3)temp (4)tail->next (5)head本题是一典型的单链表建立的题目,创建一个指针和一个尾指,然后创建新结点,逐点加入,最后返回头指针。终止条件是输入的是否为“-1”,用一个while 循环来实现创建多个结点及链上。所以第一空处的语句是开辟新结点。固定句法,填入:ITEM * 。然后把刚输入的值保存在新结点的值域,再将新结点挂在头结点(指针),先要看头指针是不是空表,head==NULL;若是,则将头指针指新建的第一个结点,尾指针也指向它。

软考初级