c++链表类对象的知识与应用0816
来源:互联网 发布:js复选框全选取消全选 编辑:程序博客网 时间:2024/06/14 23:31
代码是程序员的朋友,虽然没有热情,但是非常忠实。
上午的主要内容内容讲到了链表的知识,对于链表其实就是一个循环,从头到末尾,你可以对其中的数据进行增删该查,下面用代码来说明一切。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构
是不是还是很懵,那就对了,对于这个链表表面上不是很好理解,但是用代码来表示还是很好理解,感谢唐哥用这么这么简单明了的方法。
//#include <stdio.h>//#include<stdio.h>//struct MyStruct//{// int num;// struct MyStruct *next;//};//void main(){// struct MyStruct n1, n2, n3, n4, n5; //结构体的初始化// struct MyStruct *head = NULL; // 定义头指针的时候一定要记得赋值// // n1.num = 1; //结构体元素赋值// n2.num = 2;// n3.num = 3;// n4.num = 4;// n5.num = 5;// head = &n1;// n1.next = &n2;// n2.next = &n3;// n3.next = &n4;// n4.next = &n5;// n5.next = NULL;// printf("%d\n",head->num);// printf("%d\n", head->next->num);// printf("%d\n", head->next->next->num);// printf("%d\n", head->next->next->next->num);// printf("%d\n", head->next->next->next->next->num);////// struct MyStruct n6; // 增加数据// n6.num = 6;// n5.next = &n6;// n6.next = NULL;// printf("%d\n", head->next->next->next->next->next->num);//// struct MyStruct n7; // n7.num = 7;// n3.next = &n7;// n7.next = &n4;//n2.next = &n7; ////删除3// n3.next = NULL;// while (head!=NULL)// {// printf("%d",head->num);// head = head->next;// }////// system("pause");//////}
下午讲的东西还是比较抽象,就是经常说的类和对象,因为这个东西很抽象,所以子讲的的不是很好理解,
我就知道类首先1:属性 2 :行为
下面我百度一下官方的类和对象的概念。
这个还是应该好好数熟悉,只好借鉴人家所写的,不过我自己感觉写的还是很好的。
1.类和对象的定义
类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
对象是具有类类型的变量。
折叠2.类和对象的关系
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
折叠3.类类型的声明形式
class 类名
{
public:
公用的数据和成员函数
和成员函数
protected:
保护的数据和成员函数
private:
私有的数据
}
折叠4.定义对象的方法
1.先声明类类型,然后再定义对象
举例:Student stud1,stud2; //Student是已经声明的类类型
2.在声明类类型的同时定义对象
class Student
//声明类类型
{public :
//先声明公用部分
void display( )
{cout<<″num:″<
include
using namespace std;
class Time //定义Time类
{public : //数据成员为公用的
int hour;
int minute;
int sec;};
int main( )
{
Time t1;//定义t1为Time类对象
cin>>t1.hour;//输入设定的时间
cin>>t1.minute;
cin>>t1.sec;
//输出时间:
cout<
include
using namespace std;
class Time
{public :
int hour;
int minute;
int sec;
};
int main( )
{Time t1;//定义对象t1
cin>>t1.hour;//向t1的数据成员输入数据
cin>>t1.minute;
cin>>t1.sec;
cout<
include
using namespace std;
class Time
{public :
int hour;
int minute;
int sec;
};
int main( )
{
void set_time(Time&);//函数声明
void show_time(Time&);//函数声明
Time t1;//定义t1为Time类对象
set_time(t1);//调用set_time函数,向t1对象中的数据成员输入数据
show_time(t1);//调用show_time函数,输出t1对象中的数据
Time t2;//定义t2为Time类对象
set_time(t2);//调用set_time函数,向t2对象中的数据成员输入数据
show_time(t2);//调用show_time函数,输出t2对象中的数据
return 0;
}
void set_time(Time& t) //定义函数set_time,形参t是引用变量
{
cin>>t.hour;//输入设定的时间
cin>>t.minute;
cin>>t.sec;
}
void show_time(Time& t) //定义函数show_time,形参t是引用变量
{
cout<
include
using namespace std;
class Time
{public :
void set_time( );//公用成员函数
void show_time( );//公用成员函数
private : //数据成员为私有
int hour;
int minute;
int sec;
};
int main( )
{
Time t1;//定义对象t1
t1.set_time( );//调用对象t1的成员函数set_time,向t1的数据成员输入数据
t1.show_time( );//调用对象t1的成员函数show_time,输出t1的数据成员的值
Time t2;//定义对象t2
t2.set_time( );//调用对象t2的成员函数set_time,向t2的数据成员输入数据
t2.show_time( );//调用对象t2的成员函数show_time,输出t2的数据成员的值
return 0;
}
void Time∷set_time( ) //在类外定义set_time函数
{
cin>>hour;
cin>>minute;
cin>>sec;
}
void Time∷show_time( ) //在类外定义show_time函数
{
cout<< hour<<″:″<< minute<<″:″<< sec<< endl;
}
运行情况与例2中的程序(a)相同。
注意:
(1) 在主函数中调用两个成员函数时,应指明对象名(t1,t2)。表示调用的是哪一个对象的成员函数。
(2) 在类外定义函数时,应指明函数的作用域(如void Time∷set_time( ))。在成员函数引用本对象的数据成员时,只需直接写数据成员名,这时C++系统会把它默认为本对象的数据成员。也可以显式地写出类名并使用域运算符。
(3) 应注意区分什么场合用域运算符“∷”,什么场合用成员运算符“.”,不要搞混。
折叠例4
找出一个整型数组中的元素的最大值。这个问题可以不用类的方法来解决,现在用类来处理,读者可以比较不同方法的特点。
include
using namespace std;
class Array_max //声明类
{public : //以下3行为成员函数原型声明
void set_value( ); //对数组元素设置值
void max_value( ); //找出数组中的最大元素
void show_value( ); //输出最大值
private :
int array[10]; //整型数组
int max; //max用来存放最大值
};
void Array_max∷set_value( ) //成员函数定义,向数组元素输入数值
{ int i;
for (i=0;i<10;i++)
cin>> array;
}
void Array_max∷max_value( ) //成员函数定义,找数组元素中的最大值
{int i;
max=array[0];
for (i=1;i<10;i++)
if(array> max) max=array;
}
void Array_max∷show_value( ) //成员函数定义,输出最大值
{cout<< ″max=″<< max;}
int main( )
{Array_max arrmax; //定义对象arrmax
arrmax.set_value( ); //调用arrmax的set_value函数,向数组元素输入数值
arrmax.max_value( ); //调用arrmax的max_value函数,找出数组元素中的最大值
arrmax.show_value( ); //调用arrmax的show_value函数,输出数组元素中的最大值
return 0;
}
运行结果如下:
12 12 39 -34 17 134 045 -91 76↙ (输入10个元素的值)
max=134 (输入10个元素中的最大值)
请注意成员函数定义与调用成员函数的关系,定义成员函数只是设计了一组操作代码,并未实际执行,只有在被调用时才真正地执行这一组操作。
可以看出: 主函数很简单,语句很少,只是调用有关对象的成员函数,去完成相应的操作。
在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中使用控制结构。
在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。
- c++链表类对象的知识与应用0816
- 面向过程(c语言)与面向对象(oc,c++,c#)的区别,oc初级知识扫盲
- C与C++的小知识
- C++ 与C的一些知识
- C语言的基本理论知识与入门
- C与C++的小知识
- 领域应用 | 中医临床知识图谱的构建与应用
- 【day0407 C++】文件流对象的应用
- [C++基础 面对对象的一些知识]
- .c与.cpp的应用
- Java面向对象前的知识细节总结与思考
- c++类与对象,继承,派生的一些知识
- 【数据库知识补充】模式与对象的关系
- 面向对象原则的要点知识与设计模式
- C/C++ "#"与"##"的作用与应用
- 线程同步对象的应用与死锁
- JavaScript的对象知识
- 背景知识:纳什博弈论的原理与应用
- MapReduce_笔记1
- spring mvc Controller层(学习一)
- 经典第五章 习题 5-3 UVA 10935 Throwing cards away I(队列的简单应用)
- 2558. 【NOIP2011模拟9.9】过河问题 (StandardIO)
- [OS复习]设备管理1
- c++链表类对象的知识与应用0816
- hdu2063过山车(二分匹配)
- 自定义Dialog
- 手机网络状态改变android
- Bulletproof SSL and TLS(读书笔记)
- 深入理解PHP代码的执行的过程
- HDU 2818 && POJ1988 带权并查集
- 2016.8.16.总结
- javaSrcipt中的冒泡排序