这些天自学了下数据结构= =,感觉C掌握的就是渣啊,所以复习一下。
1.结构体
1.1结构体的定义:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
用自己的话来说就是根据需求,包括了一系列的数据类型产生新的一种数据类型。
常见的列子就是:学生信息管理系统。学生是一种自己定义的包括了学号,姓名,身高,体重等等信息的数据类型。
1.2结构体的用法:
1.2.1结构体声明:
最基本方法:
<span style="font-size:18px;">/*
**struct 是结构体关键字
** student 是结构体名称(标签)
**string和name 是结构体成员
** kaka 是声明的一个结构体变量
*/
struct student{
string name;
int age;
} kaka; </span>
当然还可以以下的方法:
<span style="font-size:18px;">**struct 是结构体关键字
** student 是结构体名称(标签)
**string和name 是结构体成员
** kaka 是声明的一个结构体变量
*/
struct student{
string name;
int age;
} kaka;
/*
**没有定义结构体名称
**kaka是声明的结构体变量
*/
struct{
string name;
int age;
} kaka;
/*
**定义时没有声明结构体变量
**需要使用时 student kaka,messi;
*/
struct student{
string name;
int age;
} ;
student kaka,messi;
/*
**用法同上
*/
typedef struct{
string name;
int age;
} student;
student kaka, messi; </span>
另外,结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针
<span style="font-size:18px;">/*
**LNode结构体包括了Book结构体和指向LNode类型的指针
** *LinkList为指向当前结构体的指针
*/
struct Book {
string id;
string name;
double price;
};
typedef struct LNode {
Book data;
struct LNode *next;
} LNode, *LinkList;</span>
1.2.2对结构体的操作
对以上的单链表进行举例
比如建立一个新链表,操作方法是:
<span style="font-size:18px;">int InitList_L(LinkList &L) {
L = new LNode;
L->next = NULL;
return OK;
}</span>
函数名中声明了一个类型为LNoded的指针L,使用L= new LNode分配内存空间
L指针上的结构体指向的指针为空
<span style="font-size:18px;">cout << left << setw(15) << p->data.id << "\t" << left << setw(
50) << p->data.name << "\t" << left << setw(5)
<< p->data.price << endl;</span>
这句话中的p为指针,所以访问结构体时用的是->,而data为结构体,访问时用data.id
附几个跟着郝斌写的几个例子见http://blog.csdn.net/u012348655/article/details/47073021