[试题]

针对以下C语言程序,请按要求回答问题。

已知link. c源程序如下:

/*link. c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入结点、删除结点和链表反转操作*/

include<stdio. h>

include<stdlib. h>

typedef struct list_node * list_pointer; //定义链表指针

typedef struct list_node{ //定义链表结构

int data;

list_pointer link;

}list_node;

//用到的操作函数

list_pointer create(); //建立一个单向链表

void 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 create a link first:/n");

//建立一个单向链表

prt=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 you choice/n");

scanf("%d",&choose);

while(choose!=0){

switch(choose){

case 1:

i=1:

while(i<location){

node=node->link;

i++:

}

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);

break;

case 3:

printf("you will invert the link/n");

ptr=invert(ptr);

print(ptr);

break;

default;

break;

return -1;

}

printf("please input you choice/n");

scanf("%d". &choose):

}

return 0;

//根据用户的输入值建立一个新的单向链表:

list_pointer create()

{

int i,current,length;

list_pointer p1,p2,head;

printf("please input the node number of the link:/n");

scanf("%d". &length):

printf("the number of the link is:%d",length);

printf("please input the data for the 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=current;

p2->link=p1;

p2=p1;

p1=(list_pointer)malloc(sizeof(list_node));

}

p2->link=NULL;

return head;

}

画出主函数main的控制流程图。

参考答案与解析:

相关试题

针对一下C语言程序,请按要求回答问题。 已知weekday. c源程序如下: i

[主观题]针对一下C语言程序,请按要求回答问题。 已知weekday. c源程序如下: include include

  • 查看答案
  • 论述题 3 :针对以下 C 语言程序,请按要求回答问题( 18 分)已知 lin

    [试题]论述题 3 :针对以下 C 语言程序,请按要求回答问题( 18 分)已知 link.c 源程序如下:/*link.c 程序对单向链表进行操作 , 首先建立一个单向链表 , 然后根据用户的选择可以对其进行插入节点 、删除节点和链表反转操作 */#include#includetypedef struct list_node *list_pointer; // 定义链表指针typedef struct list_node{ // 定义链表结构int data;list_pointer link;}li

  • 查看答案
  • 论述题3:针对以下C语言程序,请按要求回答问题下面是一个简单的C语言程序: (1

    [试题]论述题3:针对以下C语言程序,请按要求回答问题下面是一个简单的C语言程序:(1)画出该函数的程序流程图。(2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。(3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。

  • 查看答案
  • 论述题3:针对以下C语言程序,请按要求回答问题下面是一个程序段(C语言),试设计

    [试题]论述题3:针对以下C语言程序,请按要求回答问题下面是一个程序段(C语言),试设计基本路径测试的测试用例,设计出的测试用例要保证每一个基本独立路径至少要执行一次。函数说明:当i flag=0;返回i count+100当i flag=l;返回i count*10否则 返回 i count*20输入参数:int i count int i flag输出参数:int i retum程序代码如下:(1)画出该函数的控制流程图。(2)采用基本路径测试法设计一组测试用例,保证每个基本独立路径都至少执行一次。

  • 查看答案
  • 已知C源程序如下: include include void reverse(c

    [试题]已知C源程序如下: include include void reverse(char S[]){ int C,i,J; f已知C源程序如下:include<stdio. h>include<string. h>void reverse(char S[]){int C,i,J;for(i=0,j=strlen(s)-1;i<j;i++,j++){c=s[i];s[i]=s[j];s[j]=c;}}void getHex(int number,char s[]){int I;i=0;while(nu

  • 查看答案
  • 已知C源程序如下:£¯ * longIntAdd * £¯ include <s

    [试题]已知C源程序如下:/ * longIntAdd * /include <stdio. h>include <string. h>define LENGTH 81void addLInt(char sl[],char s2[]); void reverse(char s[]) ; int main(){char intstrl[LENGTH],intstr2[LENGTH];printf("请输入超长整数的被加数和加数:/n")scanf("%s%s" ,intstr

  • 查看答案
  • 阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。(说

    [试题]阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。(说明)1.HTTP◆ HTTP请求消息示例G.ET/index,htmlHTTP/1.1A.ccept:image/gif,image/jpeg,*/*A.ccept-Language:zh-chA.ccept-encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible: MSIE6.0;Windows 2003)H.ost:localhost:8080C.onnecti

  • 查看答案
  • 论述题1:以下是某应用程序的规格描述,请按要求回答问题程序规则:实现某城市的电话

    [试题]论述题1:以下是某应用程序的规格描述,请按要求回答问题程序规则:实现某城市的电话号码,该电话号码由三部分组成。它的说明如下:区号空白或3位数字;前缀非“0”或“1”开头的3位数字;后缀4位数字。(1)请分析该程序的规则说明和被测程序的功能(2)采用等价类划分方法设计测试用例。

  • 查看答案
  • 已知某高级语言源程序A经编译后得到机器c上的目标程序B,则()。

    [单选题]已知某高级语言源程序A经编译后得到机器c上的目标程序B,则( )。A.对B进行反编译,不能还原出源程序AB.对B进行反汇编,不能得到与源程序A等价的汇编程序代码C.对B进行反编译,得到的是源程序A的变量声明和算法流程D.对A和B进行交叉编译,可以产生在机器c上运行的动态链接库

  • 查看答案
  • C语言源程序的最小单位是 ( )

    [单选题]C.语言源程序的最小单位是 ( )A.程序行B.语句C.函数D.字符

  • 查看答案
  • 针对以下C语言程序,请按要求回答问题。 已知link. c源程序如下: £¯*l