`
ipython
  • 浏览: 293990 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

将单链表中的字符串逆序输出

 
阅读更多

 

/* 测试将单链表中的字符串逆序输出 

 * 本程序默认输入的字符串长度大于2

 * 2012-2-28

 */

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

typedef char elem;

 

typedef struct node {

    elem data;

    struct node* next;

} *pnode;

 

//将字符数组转换为单链表模式

pnode create_string (elem * origine) {

    pnode head,p,prev;

    prev = NULL;

    while (*origine) {

        p = (pnode) malloc (sizeof(struct node));

        p->data = *origine;

        p->next = NULL;

        if (prev != NULL)

            prev->next = p;

        else

            head = p;

        origine++;

        prev = p;

    }

    return head;

}

 

//输出打印由链表组成的字符串

void print_string (pnode p) {

    printf("\n");

    while (p) {

        printf("%c",p->data);

        p = p->next;

    }

    return;

}

 

//用链表将字符串逆序输出

//方法: 用三个变量,分别记录p,p->next,p->next->next;

//第三个变量用于遍历链表, 第一,二个变量用于交换链接

pnode reverse_string1 (pnode p) {

    pnode pprev,pnext,pnnext;

    pprev  = p;

    pnext  = p->next;

    pnnext = p->next->next;

    pprev->next = NULL;           //设置链尾指向空,不然会进入无循环

    while (pnnext) {

        pnext->next = pprev;

        pprev = pnext;

        pnext = pnnext;

        pnnext = pnnext->next;

    }

    pnext->next = pprev;         //设置头节点指向下一个

    return pnext;

}

 

 

int main(int argc, const char *argv[])

{

    elem str[20] = "hello world";     //用于测试的字符串

    pnode pp = create_string(str);

    print_string (pp);

    print_string ( reverse_string1 (pp) );

    return 0;

}


分享到:
评论

相关推荐

    C语言实现单链表逆序与逆序输出实例

    单链表的逆序输出分为两种情况,一种是只逆序输出,实际上不逆序;另一种是把链表逆序。本文就分别实例讲述一下两种方法。具体如下: 1.逆序输出 实例代码如下: #include #include #include using namespace std; ...

    数据结构实验

    在这个实验中,我们需要设计一个算法来检查单链表中存储的字符串是否具有中心对称关系。例如,字符串"aba"和"xyzzyx"是中心对称的,因为它们从中心点开始向两侧的字符可以一一对应。在实现中,可以使用顺序栈或链栈...

    单链表的插入和删除操作

    在单链表的插入和删除操作中,需要注意的是,单链表中不允许有重复的字符串。因此,在插入操作中,需要先找到相应的结点,然后删除之。 单链表的插入算法可以分为两步:首先,找到要插入的位置,然后将新节点插入到...

    全国计算机等级考试二级C语言上机考试题库及答案.pdf

    - 字符串逆序输出:不改变原字符串,而是遍历字符串并逐个输出字符,从后往前遍历即可。 - 字符串长度比较:通过逐个遍历字符串直到遇到空字符,记录长度后比较。 这些题目覆盖了C语言的基础知识和编程技能,对于...

    严尉敏数据结构(c语言版)代码

    10. **字符串处理**:字符串在计算机科学中占据重要地位,涉及到模式匹配、字符串搜索和替换、正则表达式等操作。 严尉敏教授的《数据结构》代码实现,覆盖了上述所有知识点,并提供了具体的C语言代码,有助于读者...

    c语言 利用学生信息栈实现学生信息单链表的逆置

    1.输入的形式和输入值的范围:在所有输入中,学生的姓名和学号都是字符串,成绩是整数。 2.输出的形式:建立顺序表后显示顺序表的内容,也可以随时手动查询顺序表的内容。 3.程序所能达到的功能:完成栈的建立、...

    电子科技大学820计算机复试自己编写C复试答案.doc

    - 不申请新空间的字符串逆序,可以通过双指针法实现。定义两个指针,一个从字符串开头,一个从结尾,交换它们指向的字符,直到两个指针相遇。这里需要注意字符串长度的计算和指针移动的边界条件。 这些题目覆盖了...

    深圳大学数据结构期末考试

    在本题中,需要使用堆栈实现字符替换的加密技术,即将输入的字符串逆序加密一次,然后再顺序加密一次,得到最终密文。 堆栈应用之数据加密可以使用以下步骤实现: 1. 创建两个堆栈 A 和 B。 2. 把字符逐个压入堆栈...

    "C语言程序设计大赛”模拟题库

    14. 后缀判断:同样使用字符串比较函数,但需逆序处理,检查字符串后缀。 15. 子串查找:使用KMP或朴素算法实现字符串查找,返回首次出现的位置。 16. 指定位置查找子串:在特定索引开始查找,返回子串首次出现的...

    c++习题

    - 将整型数据转换成字符串涉及到数字的拆分和字符化。一个常见方法是通过不断取模和除法操作,将整数的每一位转换为字符。例如,`number % 10`用于获取个位,`number / 10`用于移除个位。字符的转换可以通过加上48...

    华为机试108题源码(题目&&解答)

    ├─023 删除字符串中出现次数最少字符 │ └─Source │ └─Debug ├─024 合唱队 │ └─Source │ ├─Debug │ └─Release ├─025 数据分类处理 │ └─Source │ └─Debug ├─026 查找兄弟单词 │ └─...

    C语言面试题(经典)

    ### 知识点二:单链表的建立及逆序输出 **题目描述:** 要求实现一个函数,创建一个单向链表,并将字符 `'a'` 到 `'z'` 插入到链表中,并按照逆序的方式输出链表中的所有元素。 **方法1:** ```c typedef struct ...

    数据结构(C语言)代码实例14

    "反出字符.txt"可能涉及字符串处理,可能是一个逆序输出字符串的程序,这可以使用遍历字符串的方法实现。 "迭代整除.txt"可能是一个用迭代方法实现的整数除法,这对于理解和优化算法性能很重要,尤其是在处理大数据...

    c语言经典案例

    实例202 双链表逆序输出 291 实例203 约瑟夫环 293 实例204 创建顺序表并插入元素 294 实例205 合并两个链表 296 实例206 单链表节点逆置 298 实例207 应用栈实现进制转换 300 实例208 用栈实现行编辑程序 303 实例...

    数据结构实验说明书2021.doc

    将字符串一半的字符压入栈,然后比较栈中弹出的字符与另一半字符是否一一对应。 实验中,定义了`SqStack`结构体表示顺序栈,包含`InitStack`用于初始化栈,`Push`用于压栈,`Pop`用于出栈,`GetTop`用于获取栈顶...

    西北工业大学 C++程序设计 noj习题答案

    4. **字符串处理**:涉及字符串的定义、拷贝、比较、加密编码、逆序等操作,以及字符串函数的使用,如`strcpy`, `strlen`, `strcat`, `strcmp`等。 5. **结构体与类**:可能包含简单的面向对象编程,如自定义数据...

    搜索引擎工程师面试题整理.pdf

    首先,将每个输入字符串作为键,其出现次数作为值存储在哈希表中。然后,维护一个大小为10的最小堆,每当哈希表中的某个键的频率增加时,更新最小堆。最后,堆顶的10个元素就是最热门的输入。这个算法的时间复杂度是...

Global site tag (gtag.js) - Google Analytics