c++链表类对象的知识与应用0816

    xiaoxiao2026-09-01  8

    代码是程序员的朋友,虽然没有热情,但是非常忠实。

    上午的主要内容内容讲到了链表的知识,对于链表其实就是一个循环,从头到末尾,你可以对其中的数据进行增删该查,下面用代码来说明一切。 每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构 是不是还是很懵,那就对了,对于这个链表表面上不是很好理解,但是用代码来表示还是很好理解,感谢唐哥用这么这么简单明了的方法。

    //#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个元素中的最大值)

    请注意成员函数定义与调用成员函数的关系,定义成员函数只是设计了一组操作代码,并未实际执行,只有在被调用时才真正地执行这一组操作。

    可以看出: 主函数很简单,语句很少,只是调用有关对象的成员函数,去完成相应的操作。

    在大多数情况下,主函数中甚至不出现控制结构(判断结构和循环结构),而在成员函数中使用控制结构。

    在面向对象的程序设计中,最关键的工作是类的设计。所有的数据和对数据的操作都体现在类中。

    转载请注明原文地址: https://ju.6miu.com/read-1311772.html
    最新回复(0)