数组的基础概念:
1.元素:数组中存储的数据单元,每个元素都具有相同的数据类型。
2.下标:用来表示数组中每个元素在数组中所处位置的整数值,也称为索引。
3.大小(长度):数组中元素的个数,也称为容量。
4.类型:在定义数组时需要指定数据类型,例如 int、double、char 等。
简单了解数组指针和指针数组的区别:
1.数组指针
数组指针也称为指向数组的指针,是指一个指针变量,该指针变量指向一个数组。通常用数组指针来间接引用数组元素。
2.指针数组
指针数组是一个数组,其中的每个元素都是指针类型。
以下展示二者的区别:
#include <stdio.h>
int main()
{
int a[2][5] ={1,2,3,4,5,6,7,8,9,10};
int *p1[2]; // 指针数组,可理解为两个int型的指针,p1[0],p1[1].
int (*p2)[5]=a; // 数组指针,它指向的是一块长度为5的int型数组的首地址
p1[0]=a[0],p1[1]=a[1];
printf("a[0]=%d,*p1[0]=%d,*p1[1]=%d,(*p2)[0]=%d\n",a[0][0],*p1[0],*p1[1],(*p2)[0]);
printf("a[0]=%d,*(p1[0]+1)=%d,*(p1[1]+1)=%d,*(p2+1)[0]=%d\n",a[0][0],*(p1[0]+1),*(p1[1]+1),*(p2+1)[0]);
return 0;
}
从运行结果中不难看出,指针数组加1其实就是在列上加了1,而数组指针加1是对行进行了加1的操作。
广义表的基础概念:
1.原子:广义表中不再可分解的基本数据项,可以是任何数据类型。
2.子表:广义表中嵌套的另一个广义表,也可以看做广义表的一个元素。
3.头部:广义表中第一个元素,可以是原子或子表。
4.尾部:广义表中除了头部之外的部分,可以是空表或另一个广义表。
5.长度:广义表中元素的个数,包括头部和尾部。
(1, (2, 3, 4))
在这个广义表中,第一个元素是整数1,第二个元素是一个子表 (2, 3, 4),它包含了三个整数元素。子表也可以再包含子表,因此广义表可以非常灵活地表示各种复杂的数据。
广义表的递归定义为:
- 空表是广义表;
- 任何单一元素构成的表均为广义表;
- 由若干个广义表构成的有限序列,可以组成一个广义表。
例如,以下展示了一个由三个子表组成的广义表:
[1, [2, 3], [4, [5, 6], 7]]
总而言之,广义表是一种灵活、可递归扩展的数据结构,它可以用于表示各种复杂的数据。