结构体数组

1.结构体数组

如果有10个学生的基本信息需要参加运算,应该用结构体数组。它跟我们之前遇到的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,分别包括若干个成员项。

struct Person

{char name[20];

int count;

};

int main()

{Person leader[3]={"Li",0,"Zhang",0"Xu",0};

//定义Person类型的数组,有3个元素,成员内容为姓名和得票数

2.指向结构体变量的指针

概念:该变量内存的起始地址

3.可以通过指针引用结构体变量中的成员,以下三种形式等价:

struct Student;

{        };

Student stu1;

Student*p=&stu1;           //p指向结构体变量stu1,注意格式

1)结构体变量名.成员名       stu1.num

2)(*p).成员名                   (*p).num

3)p->成员名                       p->num

4.用结构体变量和指向结构体变量的指针构成链表

链表是一种数据结构,链表中有一个头指针(head),它存放一个地址,指向第一个元素。

链表中的元素称为结点,每个结点包括:

1.用户需要的实际数据

2.下一个结点的地址(最后一个元素的地址放NULL,链表结束)

struct Student

{int num;

float score;

Student *next;    //next指向Student结构体变量

};

用这种方式就可以建立链表

实例(静态链表):

struct Student
{

int num;

float score;

Student *next;

};

int main()

{

student a,b,*head,*p;

a.num=1001,a.score=91;

b.num=1002,a.score=92;

head=&a;

a.next=&b;

b.next=NULL;

}

3.结构体类型数据作函数参数

1)结构体变量名作实参  较少使用,原因是形参值不能返回

2)用指向结构体变量的指针作函数实参

3)用结构体变量的引用作函数形参,它就成为实参(结构体变量)的别名(推荐:直观易懂,效率高)

第3)点举例

struct Student

{int num;

string name;

float score[3];

}stu={1001,"Nike",91,92,93};

int main()

{void print(Student&);

print(stu);

return 0;

}

void print(Student &stud)

{cout<<stud.num}










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) Ex( ) { int i , j , t ; (1) for( i=1 ; i<10 ; i++) //n = (2) printf(“\n %d” , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(“\n”); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(“]”,t); //n = } (9) for(j=1; j 0) { if(x > 100) {x -= 10 ; y -- ;} else x ++ ; } 问if 语句执行了多少次?(2分) y--执行了多少次?(2分) x ++执行了多少次?(2分) 三、回答问题(共25分) 书中16页的起泡排序如下: void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]{a[j]<-->a[j+1];change=TRUE; } } }//bubble_sort 1.(共15分)分析该算法的最佳情况 ,最坏情况和平均情况下各自的时间复杂度(给出分析思路与过程)。 (1) 最佳情况的时间复杂度分析(5分): (2) 最坏情况的时间复杂度分析(5分): (3) 平均情况的时间复杂度分析(5分): 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每3分,共9分)。 1. 设f为原操作,则如下算法的时间复杂度是( )。 for (i = 1; i*i=1;i--) for(j=1;jA[j+1]) A[j]与A[j+1]对换; 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B.O(nlog2n) C. O(n3) D. O(n2)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值