`

C语言面试:Reverse Sentence, Reverse LinkedList

 
阅读更多

 

// Reverse the word order of a c-string
// for example:  "Avere is the best" --> "best the is Avere"

void reverse(char* begin, char *end) {
    char tmp;
    while(begin < end) { //begin end
        tmp = *begin;
        *begin++ = *end;
        *end-- = tmp;
    }
}
// "" -> ""
// "best" -> "best"
// "best world" -> "best world"
// " best world " -> " world best " ?????? [ tseb dlrow ]
// ""
// "a best" -> 
// str == NULL
void reverseSentence(char* str) 
{
    if(!str) return;
    char *begin = str; 
    char *s = str;
    while(*s) {
        s++;
        if(*s == '\0') {
            reverse(begin, s-1);
        } else if(*s == ' ') {
            reverse(begin, s-1); // erevA
            begin = s+1;
        }
    }
    // "erevA si eht tseb"
    reverse(str, s-1);
    // "best the is Avere"
}


// uint_32 data
typedef struct list_node{
    int val;
    struct list_node *next;
} s_list_node;

void insert(s_list_node *head, int data) {
    // lock
    s_list_node *h = head;
    if(!h) return; // unlock
    while(h->next) {
        h = h->next;
    }
    s_list_node *node = (s_list_node *)malloc(sizeof(s_list_node));
    node->val = data;
    h->next = node;
    // unlock
}

s_list_node *lookup(s_list_node *head, int target) {
    s_list_node *h = head;
    while(h) {
        if(h->val == target) return h;
        h = h->next;
    }
    return NULL;
}

// 1->2->3->4 => 4->3->2->1
void reverse(s_list_node **head) {
    s_list_node *prev = NULL;
    s_list_node *cur = *head;
    while(cur) {
        s_list_node *next = cur->next;
        cur->next = prev;
        prev = cur;
        cur = next;
    }
    *head = prev;
}

 

 

分享到:
评论

相关推荐

    C++ reverse介绍及使用

    在C++编程语言中,`std::reverse`函数是一个非常实用的工具,它允许程序员轻松地反转各种序列,包括字符串和数组。这个函数是C++标准库中的成员,位于`&lt;algorithm&gt;`头文件中。本篇文章将深入探讨`std::reverse`函数...

    c语言面试题之双指针反转字符串.zip

    在C语言面试中,双指针技术是一种常用且重要的技巧,尤其在处理字符串操作时。双指针法的核心思想是利用两个或多个指针在数组或字符串中的移动来实现特定的功能,例如查找、排序或变换数据。在这个"反转字符串"的...

    重解几道华为经典C语言面试题

    ### 重解几道华为经典C语言面试题 在IT行业中,华为作为一家全球领先的ICT解决方案提供商,在招聘过程中尤其重视应聘者的编程能力和逻辑思维能力。其中,C语言因其高效、灵活的特点,在华为的软件开发中占据着重要...

    C语言实现字符串逆序操作string-reverse

    C语言实现字符串逆序操作,示例代码使用循环、使用递归、使用C++的std::reverse函数(需要C++环境)三种方法实现了字符串的逆序操作,实际应用中可以根据实际需求和环境选择合适的方法。

    c语言面试题

    字符串操作也是C语言面试中的一个重要部分。 ```c void insert(char *s, char *t, int i) { char *q = t; char *p = s; if (q == NULL) return; while (*p != '\0') { p++; } while (*q != 0) { *p = *q; ...

    c语言-leetcode 0007-reverse-integer.zip

    c c语言_leetcode 0007_reverse_integer.zip

    leetcode伪代码-reverseString_seperatedByDigits:reverseString_seperatedByDi

    reverseString_seperatedByDigits 给定一个包含由数字(0-9)分隔的单词的字符串。 原位反转词 例如:asd1fa -&gt; dsa1af 伪代码:- 获取字符串并检查数字或不使用 parseInt。 一种。 如果字符串只保存数字,则返回...

    翻转字符串数组

    下面将详细介绍三种可能的实现方式,对应于压缩包中的三个文件:`reverse2.cpp`, `reverse3.cpp`, 和 `reverse.cpp`。 ### 1. 使用标准库函数`std::reverse` `reverse.cpp`可能使用了C++标准库中的`std::reverse`...

    Camus:Reverse_Shell在C ++中实现,可以绕过沙箱

    Reverse_Shell用C ++实现,能够通过检测鼠标移动来绕过沙箱 特征: 通过C ++实现的Reverse_shell 通过识别鼠标移动来绕过沙箱 动态API解析,可绕过静态分析 零检测率(在发言时) 使用方法:以IP地址和端口作为...

    C语言实现的双链表功能完整示例

    双链表的逆置操作主要通过reverse函数来实现,该函数主要用于将链表中的数据元素逆置。 七、双链表的查找操作 双链表的查找操作主要通过find函数来实现,该函数主要用于查找链表中数据值为x的结点。 八、双链表的...

    LinkedList_example:LinkedList Javascript

    此外,可以增加`indexOf`方法以支持查找元素,或者实现`reverse`方法来反转LinkedList。 总之,LinkedList是JavaScript中一种重要的数据结构,虽然不如数组方便,但在特定场景下能提供更好的性能。理解其工作原理并...

    reverse-word-list:reverse-word-list是一个React App,它使用后端来反转文本并可视化请求的历史记录

    反向词表reverse-word-list是一个React App,它使用后端来反转文本并可视化请求的历史记录。在本地主机上构建并运行首次安装依赖项: npm install 在localhost中运行npm start 要创建生产版本: npm run build-prod ...

    Python 列表排序方法reverse、sort、sorted详解

    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法 将列表中元素反转排序,比如...

    List-LinkedList 单链表就地反转

    void reverse(LinkedList list) { LinkedList head = list; LinkedList t1 = head-&gt;next; LinkedList t2 = t1-&gt;next; t1-&gt;next = NULL; // 设置最后一个节点的 next 为 NULL while (t2-&gt;next) { t1 = t2; ...

    c语言-leetcode题解541-reverse-string-ii.c

    c语言入门 c语言_leetcode题解541-reverse-string-ii.c

    Python-ReversemodeAutomaticDifferentiation

    Reverse-mode Automatic Differentiation

    c语言-leetcode 0025-reverse-nodes-in-k-group.zip

    c c语言_leetcode 0025_reverse_nodes_in_k_group.zip

    字符串逆序输出StrReverse.

    首先,我们需要包含`&lt;algorithm&gt;`头文件,然后创建一个`std::string`对象,最后调用`std::reverse`函数作用于字符串的字符数组。示例代码如下: ```cpp #include #include #include int main() { std::string ...

    开发人员技术面试:전공개발자식식식백과전사전전

    开发人员技术面试 식식식식전전전사전 :open_book: 自:2019.03.01 合作者 提交约定规则:날짜-[주제]-내용-상태 ex) 2019-10-14 [Algorithm] Sort Add/Update/Delete 내 용 잘 못 된 은 와 로 알 려 주 세 요 ...

    2022年C语言笔试面试题整理.doc

    C语言笔试面试题整理 随着企业招聘的日益激烈,笔试面试成为衡量程序员能力的重要环节。如果您不是那种编程功底非常深厚的人,又不好好准备一下,在笔试面试中往往会处在被动局面。虽然有些笔试题是故意为难我们,...

Global site tag (gtag.js) - Google Analytics