第3章习题答案

发布 2023-05-21 06:54:28 阅读 3684

1. 描述以下概念:数据,数据元素,数据结构。

答:数据:数据是指所有能被输入到计算机并被加工处理的信息的集合。它可以是用于运算的一组数据,也可以是一些文字、符号,或者一幅图、一张表、一组声音等等。

数据元素:数据元素是数据处理的基本单位。数据是由若干个数据元素组成的,每个数据元素可包含若干个数据项,数据项是数据处理的最小单位。

数据结构:数据结构是指数据元素及其相互关系。作为一门学科,数据结构研究的主要方面包括:数据的逻辑结构、存储结构和基本运算。

2. 试写一算法,将元素x插入到线性表适当的位置,以保持线性表的有序性。

参考程序见“上机练习\参***”文件夹中的“

参考程序见“上机练习\参***”文件夹中的“

/此程序功能为将两个顺序升序线性表合并为一个新线性表,存放在新的数组中。

#include<>

void combine(int a,int n,int b,int m,int c)

/此函数功能为将存放在数组a和b中的两个升序线性表合并,新线性表存放于数组c中。

int i=0,j=0,k=0;

/各取表a和表b中的一个元素比较,将其中小的元素放在表c中。

while(i

/ 将表a中剩余元素依次放入表c中。

while(i c[k++]a[i++]

/ 将表b中剩余元素依次放入表c中。

while(j c[k++]b[j++]

void main()

int a[5]=;

int b[5]=;

int c[10];

int i,n=5,m=5;

combine(a,n,b,m,c);

for(i=0;i printf("%5d",c[i]);

/此程序功能为:在一个升序的整型单链表上删除重复多余结点。

/如原链表结点值为:1 2 2 4 5 6 6 6 9 9 10 ,删除后链表结点为:1 2 4 5 6 9 10

#include <>

#include <>

#define len sizeof(node)

typedef struct nodetype

int data;

*data数据项用于存放结点的数据值。

struct nodetype *next;

*next数据项存放下一个结点的指针*/

node;

node* initl()

node *head;

head=(node*)malloc(len);

*为头结点申请空间*/

if(head!=null) head->next=null;

return(head);

*将头结点的指针域初始化为null*/

node* creatl()

*建立一个头为head的带头结点的单链表*/

node *head,*p,*s;

int x;

head=initl链表初始化*/

p=head尾结点初始化为头结点*/

printf("输入各结点的元素值,以-1结束输入");

scanf("%d",&x);

while(x!=-1)

return head;

void output(node *head)

/ 从首元结点开始,逐个输出每个结点的值。

node* p;

p=head->next;

while(p!=null)

void dele(node* head)

/删除升序整型单链表上重复的多余结点。

int x;

node *p,*q;

p=head->next;

while(p!=null&&p->next!=null)

elsep=p->next;

void main()

node* head;

head=creatl();

dele(head);

printf("删除多余结点后的结果为");

output(head);

参考程序 “上机练习\参***”文件夹中的“

两个程序的区别仅在结点的元素值类型不同。

/此程序功能为:统计整型单链表上结点个数并将原链表倒置。

#include <>

#include <>

#define len sizeof(node)

typedef struct nodetype

int data;

*data数据项用于存放结点的数据值。

struct nodetype *next;

*next数据项存放下一个结点的指针*/

node;

node* initl()

node *head;

head=(node*)malloc(len);

*为头结点申请空间*/

if(head!=null) head->next=null;

return(head);

*将头结点的指针域初始化为null*/

node* creatl()

*建立一个头为head的带头结点的单链表*/

node *head,*p,*s;

int x;

head=initl链表初始化*/

p=head尾结点初始化为头结点*/

printf("输入各结点的元素值,以-1结束输入");

scanf("%d",&x);

while(x!=-1)

return head;

void output(node *head)

/ 从首元结点开始,逐个输出每个结点的值。

node* p;

p=head->next;

while(p!=null)

int countnode(node* head)

/统计单链表上结点个数。

int n=0;

node *p;

p=head->next;

while(p!=null)

return n;

void converse(node* head)

/倒置单链表。

node *p,*q,*s;

p=head->next; /p指向首元结点。

q=p->next; /q指向链表中第二个实际结点。

p->next=null; /将原链表在首元结点后断开,q指向断开后的后面链表上的第一个结点。

while(q!=null)

void main()

int n;

node* head;

head=creatl();

n=countnode(head);

printf("链表结点个数为%d",n);

converse(head);

printf("倒置后的链表为");

output(head);

/此程序功能为:将原整型单链表拆分为正整数链表和负整数链表。

#include <>

#include <>

#define len sizeof(node)

typedef struct nodetype

int data;

*data数据项用于存放结点的数据值。

struct nodetype *next;

*next数据项存放下一个结点的指针*/

node;

node* initl()

node *head;

head=(node*)malloc(len);

*为头结点申请空间*/

if(head!=null) head->next=null;

return(head);

*将头结点的指针域初始化为null*/

node* creatl()

*建立一个头为head的带头结点的单链表*/

node *head,*p,*s;

int x;

head=initl链表初始化*/

p=head尾结点初始化为头结点*/

printf("输入各结点的元素值,以0结束输入");

scanf("%d",&x);

while(x!=0)

第3章习题答案

第3章受弯构件的正截面受弯承载力。3.1 已知单筋矩形截面梁的截面尺寸,承受弯矩设计值,采用混凝土强度等级c30,hrb400钢筋,环境类别为一类。求所需纵向受拉钢筋的截面面积和配筋。解 由附表4 3可知,环境类别为一类,c30时梁的混凝土保护层最小厚度为20mm,故取,则 查表得 选用425 满足...

第3章习题答案

第3章货币资金及应收款项。思考题。1 答 企业办理银行汇票 银行本票 单位银行卡和信用证业务时需要向银行预缴款项。办理托收承付 委托收款时不需要向银行预缴款项。一般应在开户行办理支票转账支付业务,从原来已经办妥的银行结算账户中转账支付。2 需要辩证地看地这个问题,保持质疑精神对于学习会计学 乃至全部...

第3章习题答案

1.word 2003文档扩展名的缺省类型是 a a doc b dot c wrd d txt 2.word在 环境下运行 b a dos操作系统b windows操作系统。c unix操作系统d 任何操作系统。3.在word 2003中,当前输入的文字被显示在 c a 文档的尾部 b 鼠标指针位...