针对以下C语言程序,按要求回答问题。
已知link.c程序如下:
/*link.c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/
#include<stdio.h>
#include<stdlib.h>
typedef struet list_node*list_pointer; //定义链表指针
typedef struct list_node //定义链表结构
int date;
list_pointer link;
list node;
//用到的操作函数
1ist_pointer create( ); //建立一个单向链表
vold insert(list_pointer*p_ptr,list_pointer node; //在node后加入一个新的节点
void delete_node(list_pointer*p_ptr,list_pointer trail,list_pointer node);
//删除前一个节点是trail的当前节点node
void print(list_pointer*p_ptr); //打印链表节点中的值
list_pointer invert(list_pointer lead); //反转链表
int main( )
list_pointer ptr=NULL;
list_pointer node,trail;
list_pointer*p=&ptr;
int choose,location,i;
printf("you should creale a link first:/n");
//建立一个单向链表
ptr=create( );/*ptr指向链表的第一个节点*/
print(ptr);
//根据用户的不同选择进行相应的操作:
printf("input number 0,you can quit the program/n");
printf("input number 1,you can insert a new node to link/n");
printf("input number 2,you can delete a node from the link/n");
printf("input number 3,you can invert the link/n");
printf("please input your choice/n");
scanf("&d",&choose);
while(choose!=0)
switch(choose)
case 1:
i=1;
while(i<location)
node=node->link;
insert(p,node);/*p为指向ptr的指针*/
print(ptr);
break;
case 2:
printf("you will delete a node from the link/n");
printf("please input the location of the node:/n");
scanf("&d,&location);
node=ptr;
if(location==1)
trail=NULL;
trail=ptr;
i=1;
while(i<location)
trail=trail->link;
i++;
node=trail->link;
delete_node(p,trail,node);
print(ptr);
brcak;
ease 3:
printf("you will invert the link/n");
ptr=invert(ptr);
print(ptr);
break;
default;
break;
return-1;
printf("please input your choiee/n");
seanf("&d",&choose);
printf("please input you choice/n");
scanf("&d",&choose);
retnrn 0;
//根据用户的输入数值建立一个新的单向链表;
list_pointer create( )
int i,current,length;
list_pointer p1,p2,head;
prinff("please input the node number of the link:/n");
scanf("&d",&length);
printf("the nnmber of the link is:&d",length);
printf("please input the dais for tile link node:/n");
i=0;
p1=p2=(list_pointer)malloc(sizeof(list_node));
head=p1;
for(i=1;i<length;i++)
scanf("&d",&current);
p1->data=curren1:。 p2->link=p1;
p2=p1;
p1=(list_pointer)malloc(sizeof(list_node));
p2->link=NULL;
return head;
画出主函数main的控制流程图。
题库:计算机等级考试
类型:简答题
时间:2017-07-03 16:11:25
免费下载:《问答集》Word试卷
针对以下C语言程序,按要求回答问题。
已知link.c程序如下:
/*link.c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/
#include<stdio.h>
#include<stdlib.h>
typedef struet list_node*list_pointer; //定义链表指针
typedef struct list_node //定义链表结构
int date;
list_pointer link;
list node;
//用到的操作函数
1ist_pointer create( ); //建立一个单向链表
vold insert(list_pointer*p_ptr,list_pointer node; //在node后加入一个新的节点
void delete_node(list_pointer*p_ptr,list_pointer trail,list_pointer node);
//删除前一个节点是trail的当前节点node
void print(list_pointer*p_ptr); //打印链表节点中的值
list_pointer invert(list_pointer lead); //反转链表
int main( )
list_pointer ptr=NULL;
list_pointer node,trail;
list_pointer*p=&ptr;
int choose,location,i;
printf("you should creale a link first:/n");
//建立一个单向链表
ptr=create( );/*ptr指向链表的第一个节点*/
print(ptr);
//根据用户的不同选择进行相应的操作:
printf("input number 0,you can quit the program/n");
printf("input number 1,you can insert a new node to link/n");
printf("input number 2,you can delete a node from the link/n");
printf("input number 3,you can invert the link/n");
printf("please input your choice/n");
scanf("&d",&choose);
while(choose!=0)
switch(choose)
case 1:
i=1;
while(i<location)
node=node->link;
insert(p,node);/*p为指向ptr的指针*/
print(ptr);
break;
case 2:
printf("you will delete a node from the link/n");
printf("please input the location of the node:/n");
scanf("&d,&location);
node=ptr;
if(location==1)
trail=NULL;
trail=ptr;
i=1;
while(i<location)
trail=trail->link;
i++;
node=trail->link;
delete_node(p,trail,node);
print(ptr);
brcak;
ease 3:
printf("you will invert the link/n");
ptr=invert(ptr);
print(ptr);
break;
default;
break;
return-1;
printf("please input your choiee/n");
seanf("&d",&choose);
printf("please input you choice/n");
scanf("&d",&choose);
retnrn 0;
//根据用户的输入数值建立一个新的单向链表;
list_pointer create( )
int i,current,length;
list_pointer p1,p2,head;
prinff("please input the node number of the link:/n");
scanf("&d",&length);
printf("the nnmber of the link is:&d",length);
printf("please input the dais for tile link node:/n");
i=0;
p1=p2=(list_pointer)malloc(sizeof(list_node));
head=p1;
for(i=1;i<length;i++)
scanf("&d",&current);
p1->data=curren1:。 p2->link=p1;
p2=p1;
p1=(list_pointer)malloc(sizeof(list_node));
p2->link=NULL;
return head;
画出主函数main的控制流程图。
本题关键词:程序,工作程序,价值工程工作程序,单位工程验收程序,单位工程施工程序,行政诉讼程序,工程施工程序,复苏程序,建设程序,程序变更;