栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

王道数据结构c语言中级阶段第一课

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

王道数据结构c语言中级阶段第一课

这里写自定义目录标题
  • 1、递归
  • 2、结构体结构体指针
    • 2.1、声明一个结构体类型的一般形式
    • 2.2、结构体指针的使用
    • 2.3 typedef 的使用
    • 2.3 c++的引用
  • 3、逻辑结构与存储结构
    • 3.1逻辑结构
    • 3.2存储结构

1、递归

第一步找公式,第二步写结束条件

#include
//上楼梯问题
int step(int n)
{ 

	if (n == 1 || n == 2)
	{
		return n;

	}


	return step(n-1) + step(n - 2);

}

int main() {

	int n;
	scanf_s("%d", &n);
	step(n);
	return 0;

}
2、结构体结构体指针 2.1、声明一个结构体类型的一般形式
struct 结构体名 {
    
    成员列表;
}
#include
#include
//结构题的类型

struct student {
	int num;
	char name[20];
	char sex;
	int age;
	float score;
	char addr[30];
};//结构体声明,注意最后一定要加分号
//结构体的大小68个字节
//cpu取地址不满4对齐
//对齐的目的是使提高cpu访问内存的效率

int mian()
{
	struct student s = { 1001,"lele",'m',19,98.5,"shenzhen" };// 初始化操作
	struct student sarr[3];//结构体数组
	int i;
	printf("%d %s %c %d %5.2f %sn", s.num, s.name, s.sex, s.score, s.addr);
	for(i = 0; i < 3;i++)
	{
		scanf("%d %s %c %d %f %s",&sarr[i].num,sarr[i].name,sarr[i].addr);//直接写成数组
        
	}
	return 0;


}

2.2、结构体指针的使用
#include
#include
//结构题的类型

struct student {
	int num;
	char name[20];
	char sex;

};

int main()
{
	struct student s = { 1001,"wangle",'M' };
	struct student* p;//不用用点 因为指针优先级低于.
	p = &s;
	printf("%d %s %cn", (*p).num, (*p).name, (*p).sex);
	printf("%d %s %c n", p->num, p->name, p->sex);
	return 0;
}
2.3 typedef 的使用

起别名

typedef struct student{
int num;
char name[20];
char sex;
}stu,*pstu; //可以起两个别名

对int 起别名,为了做到代码既注释

#include 

typedef struct student {
	int num;
	char name[20];
	char sex;
}stu, * pstu; //可以起两个别名,叫stu 结构体指针的名称叫pstu;

typedef int INTEGER;
int main() {
	stu s = { 1001,"wangle",'M' };
	pstu p; //stu*p1 ,那p1也是一个结构体指针
	INTEGER i = 10;
	p = &s;
	printf("i=%d,p->num=%dn", i, p->num);

}
2.3 c++的引用
int a;
void modifynum(int &b){
++b;

}

把&写到形参的位置是c++的语法,称为引用

#include

void modifynum(int& b)
{
	b = b + 1;
}
int main()
{
	int a = 10;
	modifynum(a);
	printf("a=%dn", a);
	return 0;
}
//把&写到形参的位置是c++的语法,被称为引用,这时候操作b在主函数里面使用和a等价的

出现不能将 void 类型的值分配到int型 说明要强制类型转换

#include
#include
void modifynum(int& b)
{
	b = b + 1;
}
void modify_pointer(int*& p)//相当于二级指针吧
{
	p = (int*)malloc(20);
    p[0]=5;
}
int main()
{
	int a = 10;
	modifynum(a);
	printf("a=%dn", a);
	int* p = NULL;
	modify_pointer(p);
	return 0;
}

*int &P 相当于二级指针

3、逻辑结构与存储结构 3.1逻辑结构

数据之间的逻辑关系 抽象的

分为集合结构 无关系

线性结构 一对一

树形结构 一对多

图形结构 多对多

3.2存储结构

数据结构在计算机中的表示 具体的

顺序存储 顺序结构每个元素都是挨着的

链式存储 数据是跳跃的不是挨着的

索引存储

散列存储

计算机只存在顺序存储和链式存储

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号