题库 题库

【简答题】

试题二
阅读下列程序说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[程序2说明]
本程序中的函数 first_insert() 的功能是在已知链表的首表元之前插入一个指定值的表元;函数 reverse_copy() 的功能是按已知链表复制出一个新链表,但新链表的表元链接顺序与已知链表的表元链接顺序相反;函数 print_link() 用来输出链表中各表元的值;函数 free_link()用来释放链表全部表元空间。
[程序2〕
#include〈stdip.h〉
#include〈malloc.h〉
typedef struct node{ int val;
        struct node *next;} NODE;
void first_insert( NODE **p,int v)
{ NODE *q = (NODE *) malloc( sizeof(NODE));
    q -> va1 = v;__(1)__; *p = __(2)__;
}
NODE *reverse_copy(NODE *p)
{ NODE *u;
    for( u = NULL ; p ; p = p ->next ) first_insert(__(3)__);
    return u;
}
void print_link( NODE *p )
{ for( ;__(4)__) printf ("%d\t" , p -> val);
    printf("\n");
void free_link(NODE*p)
{ NODE *u;
    while( p != NULL){ u=p-〉next;free( p );__(5)__;}
}
void main()
{ NODE *link1 , *link2;
int i ;linkl = NULL ;
for( i = 1;i <= 10 ; i++ )
    first insert( &link1,i );
link2 = revere_ copy(link1);
print_link(link1);freeJink(linkl);
print_link(link2);free_link(link2);
}

参考答案

(1) q ->ncxt = *p
(2) q
(3) &u ,p->val
(4) p != NULL; p = p->next
(5) p = u

相关试题