题目----数据结构线性表----字符串逆序

简介: 题目----数据结构线性表----字符串逆序

题目

本题要求实现一个字符串逆序的简单函数。

函数接口定义:

void f( char *p );

函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数

裁判测试程序样例:

#include <stdio.h>
#define MAXS 20
 
void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */
 
int main()
{
    char s[MAXS];
 
    ReadString(s);
    f(s);
    printf("%s\n", s);
 
    return 0;
}
 
  /* 你的代码将被嵌在这里 */
输入

Hello World!

输出

!dlroW olleH

样例输入 Copy

abcde


样例输出 Copy

edcba


提示

字符串可能包含空格。

解答

解法一:数组

void f( char *p )
{
    int cnt = 0;
    while(p[cnt] != '\0') {
        cnt++;
    }
    int i;
    for(i=0; i<cnt/2; i++) {
        char temp = p[i];
        p[i] = p[cnt-1-i];
        p[cnt-1-i] = temp;
    }
}

解法二:指针

void f( char *p )
{
    int cnt = 0;
    while(*(p+cnt) != '\0') {
        cnt++;
    }
    int i;
    for(i=0; i<cnt/2; i++) {
        char temp = *(p+i);
        *(p+i) = *(p+cnt-1-i);
        *(p+cnt-1-i) = temp;
    }
}
目录
相关文章
|
14天前
|
存储 C语言
数据结构中的线性表链式存储介绍及其基本操作
链式存储是线性表的一种重要存储方式,它通过节点和指针的结构,实现了灵活的动态存储管理。本文介绍了单向链表的基本操作,并提供了相应的C语言代码示例。理解和掌握链表的操作对学习和应用数据结构具有重要意义。希望这篇博客能帮助你更好地理解线性表的链式存储。
25 2
|
1天前
|
存储 测试技术
【数据结构】操作受限的线性表,栈的具体实现
【数据结构】操作受限的线性表,栈的具体实现
12 5
|
1天前
|
存储 测试技术
【数据结构】操作受限的线性表,队列的具体实现
【数据结构】操作受限的线性表,队列的具体实现
11 4
|
1天前
|
存储 JavaScript 前端开发
JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)
【6月更文挑战第25天】JavaScript中的对象是数据结构,存储键值对,键为字符串,值可为任意类型,包括函数(作为方法)。
8 2
|
12天前
数据结构 字符串 (第6天)
数据结构 字符串 (第6天)
|
20天前
|
存储 算法 测试技术
数据结构学习记录——树习题-Complete Binary Search Tree(题目描述、输入输出示例、数据结构的选择、核心算法、计算左子树的规模)
数据结构学习记录——树习题-Complete Binary Search Tree(题目描述、输入输出示例、数据结构的选择、核心算法、计算左子树的规模)
19 1
|
20天前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
15 1
|
2天前
|
算法 Java
Java数据结构与算法:字符串匹配算法之暴力匹配
Java数据结构与算法:字符串匹配算法之暴力匹配
|
2天前
|
算法 Java
Java数据结构与算法:字符串匹配算法之KMP算法
Java数据结构与算法:字符串匹配算法之KMP算法
|
20天前
|
存储 算法
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
数据结构学习记录——图应用实例-六度空间(题目描述、算法思路、伪代码及解读、图解)
14 0