这些天自学了下数据结构= =,感觉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