下面的函数实现删除动态链表中指定的结点,以学号num作为删除结点的标志(查找对象)。请填空。
struct student *del(struct student *head,long num)
{ struct student *p1,*p2;
if(______【1】_______) {printf(“\\n list null ! \\n”); return(head); }
p1=head;
while(num !=p1->num && p1->next != NULL)
{ _____【2】______; p1=p1->next; }
if(num == p1->num)
{ if(p1 = = head) head=p1->next;
else __________【3】____________;
printf(“delete: %d\\n”,num);
n=n-1;
________【4】_________;
}
else printf(“%ld not been found ! \\n”,num);
return(head);
}
答案解析
解析:
相关题目
以下能正确表述算式 sin(2πr+30°)的C语言表达式是( )。
有以下程序
#include
main()
{
char b,c;
int i;
b='a';
c='A';
for(i=0;i<6;i++)
{
if (i%2) putchar(i+b);
else
putchar(i+c);
}
printf("\\n");
}
程序运行后的输出结果是( )。
有以下程序
#include
int m1(int x,int y)
{
return x<=y ? x :y;
}
int m2(int x,int y)
{
return x<=y ? y :x;
}
int fun(int a,int b)
{
return a+b;
}
main()
{
int x=2,y=3,z=1;
printf("%d\n", fun(m1(x,y),m2(y,z)));
}
程序的运行结果是( )。
关于C语言标识符,以下叙述错误的是( )。
有以下程序
#include
main()
{
int i,j = 0;
char a[] = "How are you", b[10] = {0};
for (i=0; a[i]; i++)
if (a[i] == ' ')
b[j++] = a[i+1];
printf("%s\n",b);
}
程序运行后的输出结果是( )。
有以下程序
#include
#include
struct S
{
char name[10];
};
void change(struct S *data, int value)
{
strcpy(data->name, "#");
value = 6;
}
main()
{
struct S input;
int num = 3;
strcpy(input.name, "OK");
change(&input, num);
printf("%s,%d\n", input.name, num);
}
程序运行后的输出结果是( )。
以下叙述中正确的是( )。
一个C程序的执行是从( ) 。
以下叙述正确的是( ) 。
以下叙述不正确的是( ) 。
