(C/C++)语法入门解题报告:结构体、类、指针、引用

简介: (C/C++)语法入门解题报告:结构体、类、指针、引用

1、斐波那契数列


题目要求:写一个函数,输出第n项斐波那契数列。


1669436152766.jpg


class Solution {
public:
    int Fibonacci(int n) {
        int a = 0, b = 1;//首项为0
        while(n --)进行n次替换
        {
            int c = a + b;
            a = b, b = c;
        }
        return a;
    }
};

方法2:递归实现

class Solution {
public:
    int Fibonacci(int n) {
        if(n <= 1) return n;
        else return Fibonacci(n-1) + Fibonacci(n-2);
    }
};


2、替换空格


题目要求:实现一个函数,把字符串中的每个空格替换成"%20"

1669436177447.jpg

class Solution {
public:
    string replaceSpaces(string &str) {
        string res;//定义一个新字符串
        for(auto c : str)//auto枚举字符串str
        if(c == ' ')
        res += "%20";
        else 
        res += c;
        return res;
    }
};

3、在O(1)时间删除链表结点


题目要求:


给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。


假设链表一定存在,并且该节点一定不是尾节点。

1669436199317.jpg

class Solution {
public:
    void deleteNode(ListNode* node) {
        node->val = node->next->val;//用下一个节点的值把我当前的值覆盖掉
        node->next = node->next->next;//再把下个节点删掉
    }
};

4、合并两个排序的链表


题目要求:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。


输入:1->3->5 , 2->4->5

输出:1->2->3->4->5->5


class Solution {
public:
    ListNode* merge(ListNode* l1, ListNode* l2) {
        auto dummy = new ListNode(-1);
        auto cur = dummy;//记录当前尾节点的地址
        while(l1 && l2)//两个指针来遍历两个链表
        {
            if(l1->val < l2->val)//每次找当前两个链表中较小值
            {
                cur->next = l1;//那个值更小就放在新链表cur后面
                cur = l1;
                l1 = l1->next;
            }
            else
            {
                cur->next = l2;
                cur = l2;
                l2 = l2->next;
            }
        }
        if(l1) cur->next = l1;//哪个不为空则接到最后一个
        else cur->next = l2;
        return dummy->next;
    }
};


5、左旋转字符串


题目要求:


字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。


请定义一个函数实现字符串左旋转操作的功能。


比如输入字符串"abcdefg"和数字 22,该函数将返回左旋转 22 位得到的结果"cdefgab"。


输入:"abcdefg" , n=2

输出:"cdefgab"

方法1:利用函数substr

class Solution {
public:
    string leftRotateString(string str, int n) {
        while(n --)
        {
            str = str.substr(1)+str[0];//每次把字符串首位接到字符串末尾,接n次
        }
        return str;
    }
};

方法2:利用reverse函数

class Solution {
public:
    string leftRotateString(string str, int n) {
       reverse(str.begin(),str.end());//先逆置全部
        reverse(str.begin(), str.begin()+str.size() -n);再分别逆置每个部分
        reverse(str.begin()+str.size()-n, str.begin()+str.size());
        return str;
    }
};


总结:让我们一起加油,我们会成为下一个大牛!

相关文章
|
2月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
217 13
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
70 4
|
2月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
199 4
|
3月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
60 2
|
4月前
|
存储 算法 C++
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
61 4
|
4月前
|
C++
继续更新完善:C++ 结构体代码转MASM32代码
继续更新完善:C++ 结构体代码转MASM32代码
|
4月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
5月前
|
存储 C语言
指针与结构体
指针与结构体
49 0
|
12天前
|
C++ 芯片
【C++面向对象——类与对象】Computer类(头歌实践教学平台习题)【合集】
声明一个简单的Computer类,含有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,以及两个公有成员函数run、stop。只能在类的内部访问。这是一种数据隐藏的机制,用于保护类的数据不被外部随意修改。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。成员可以在派生类(继承该类的子类)中访问。成员,在类的外部不能直接访问。可以在类的外部直接访问。为了完成本关任务,你需要掌握。
52 18
|
12天前
|
存储 编译器 数据安全/隐私保护
【C++面向对象——类与对象】CPU类(头歌实践教学平台习题)【合集】
声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。​ 相关知识 类的声明和使用。 类的声明和对象的声明。 构造函数和析构函数的执行。 一、类的声明和使用 1.类的声明基础 在C++中,类是创建对象的蓝图。类的声明定义了类的成员,包括数据成员(变量)和成员函数(方法)。一个简单的类声明示例如下: classMyClass{ public: int
38 13