寒假作业Day 12

寒假作业Day 12

一、选择题

在这里插入图片描述

队列是先进先出的线性表,既能插入数据,也能删除数据

在这里插入图片描述

A:ABCD,一进栈就出栈;B:DCBA,全部进栈之后再出栈
C:ACBD,先进A,然后出,进BC,然后出,最后进D然后再出
D:DCAB,CD限制了AB的顺序,所以出栈只有可能是BA,故D错误

在这里插入图片描述

有四个不同的组成:ABC,CBA,ACB,BAC
分别由这几个字符串组成:①“A”,“B”,“C”
②“CBA”
③“A”,“CB”
④”BA“,“C”
重复的是A和C,所以至多可以组成6个不同的字符串

4、已知栈 s 允许在两端出栈,但只允许在一端入栈;队列 Q 只允许在一 端入队列,在另一端出队列。设栈 s 和队列 Q 的初始状态为空, e1,e2,e3, e4,e5,e6 依次通过栈 S ,一个元素出栈后即进队列 Q ,则不可能得到的出队列的顺序是( )
A. e2,e4,e3,e5,e1,e6 B. e2,e5,e1,e3,e4,e6
C. e5,e1,e6,e3,e2,e4 D. e4,e1,e3,e5,e2,e6

按照123456的顺序进栈
A. e2,e4,e3,e5,e1,e6
这里详细写一下:1进栈;2进栈,2出栈;3,4进栈,然后一起出栈;5进栈,5和1一起出栈;6进栈,然后6出栈(这里都是从上方出栈)

B. e2,e5,e1,e3,e4,e6
这个顺序也看似合理,1,2进栈,2出栈;3,4,5进栈,5出栈;1,3出栈(从下面);6进栈,4,6一起出栈(从下方)

C. e5,e1,e6,e3,e2,e4
这个顺序不太可能,因为 e5 在 e1 和 e6 之前出栈意味着 e5 是最早入栈的元素之一,但它不能是第一个入栈的元素,因为那样 e1 就不可能在 e5 之前出栈。同时,e2 和 e4 在 e3 之后出栈也不太可能,除非在它们入栈之前有其他元素已经出栈并入队列。这种顺序在标准栈操作中难以实现。(经过尝试,516可以,但后面的234出栈不可能是324这个样子)

D. e4,e1,e3,e5,e2,e6
1,2,3,4进栈,4出栈(从上面),1出栈(从下面),3再出栈(从上面);5进栈,5和2一起出栈(从上面);6进栈,6出栈

5、现有使用数组实现的一个循环队列, front 指向队列的首元素, rear 指向队列末尾元素的下一个位置, rear指向的位置不保存元素;循环队列长度为 N 。其队内有效长度为?(front和rear都是数组下标)( )
A. (rear - front + N) % N + 1
B. (rear - front + N) % N
C. (rear - front) % (N + 1)
D. (rear - front + N) % (N - 1)

选择B,考虑到循环队列的特性,我们不能简单地使用 rear - front 来计算差值,因为当 rear 小于 front 时,这种计算会得到一个负数。为了处理这种情况,我们可以加上队列的长度 N,然后使用模运算来确保结果是一个在 [0, N-1] 范围内的数。
因此,正确的计算公式是:

队内有效长度 = (rear - front + N) % N

二、编程题

在这里插入图片描述

typedef struct ListNode ListNode;

ListNode* CreateNode(int x){
    ListNode* node=(ListNode*)malloc(sizeof(ListNode));
    if(node==NULL){
        perror("malloc fail");
        return NULL;
    }

    node->val=x;
    node->next=NULL;
    return node;
}

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){  
    ListNode dummy; // 使用一个哑节点简化链表头部的处理  
    ListNode* tail = &dummy;  
    int carry = 0; // 初始化进位为0  
  
    while (l1 || l2 || carry) {  
        int sum = carry; // 初始化sum为进位值  
        if (l1) {  
            sum += l1->val;  
            l1 = l1->next;  
        }  
        if (l2) {  
            sum += l2->val;  
            l2 = l2->next;  
        }  
        carry = sum / 10; // 更新进位值  
        tail->next = CreateNode(sum % 10); // 创建新节点存储当前位的值  
        tail = tail->next; // 移动tail指针到下一个节点  
    }  
  
    return dummy.next; // 返回哑节点的下一个节点作为结果链表的头节点  
}

照样还是用题目举个例子:

7->1->6 5->9->2617+295=912
*这里的代码是模拟了竖式相加进位的模式
*首先while(l1||l2||carry),如果了l1和l2链表结束,并且carry=0,那么这个循环就直接退出,这种就可以判断一开始如果l1和l2都为空,或者l1与l2一个为空一个不为空的情况
*75开始,sum=12,carry=1,进位1,于是tail->next为剩下来的约数2
*19,约数为1(sum初始值为上一个carry),carry=1,进位1,这个位数为1
*62,约数为9,carry=0,不进位,这个尾数为9
*相信大家看了这个例子也能很容易搞懂

在这里插入图片描述

#define MAX(a,b) ((a)>(b)?(a):(b))
int maxDepth(char* s) {
    int ans=0,size=0;
    int len=strlen(s);
    for(int i=0;i<len;i++){
        if(s[i]=='('){
            ++size;
            ans=MAX(ans,size);
        }

        else if(s[i]==')'){
            --size;
        }
    }
    return ans;
}

这道题很简单,遇到左括号size++,然后存储ans值,右括号–,自己写一个例子会很明晰

相关推荐

  1. 寒假作业2024.2.14

    2024-03-15 06:08:04       29 阅读
  2. 寒假作业2月13

    2024-03-15 06:08:04       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 06:08:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 06:08:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 06:08:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 06:08:04       20 阅读

热门阅读

  1. c语言:三个数排序(if-else实现)

    2024-03-15 06:08:04       21 阅读
  2. hbase和es的选取 hbase与es结合

    2024-03-15 06:08:04       19 阅读
  3. 【Docker】常用命令 docker stop

    2024-03-15 06:08:04       19 阅读
  4. docker 常用命令

    2024-03-15 06:08:04       21 阅读
  5. Android APP启动优化

    2024-03-15 06:08:04       18 阅读
  6. 3月14日Acwing每日一题

    2024-03-15 06:08:04       15 阅读
  7. 【C++】每日一题 100 相同的树

    2024-03-15 06:08:04       19 阅读
  8. 什么是三高架构

    2024-03-15 06:08:04       18 阅读
  9. flink的自动类型推导:解决udf的通用类型问题

    2024-03-15 06:08:04       17 阅读
  10. Conda 环境迁移

    2024-03-15 06:08:04       20 阅读
  11. LeetCode 面试经典150题 88.合并两个有序数组

    2024-03-15 06:08:04       18 阅读
  12. element-ui的tree组件获取父级节点渲染面包屑

    2024-03-15 06:08:04       18 阅读