`
zy3381
  • 浏览: 155516 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

指向指针的方法对n个字符串排序

 
阅读更多
说实话前面的对整数的指向指针的排序真没看出有什么意思,但是这个对字符串的指向指针的排序方法让我察觉到了其意义所在,字符串一般都需要大量的存储空间来保存,如果直接对其进行排序,必然涉及到大量的字符串移动,这是非常浪费资源的,而通过指向字符串的指针来排序,排序的对象仅仅是一个存储着指针值的数组而已,差不多就是对整数排序的开销而达到了发现字符串大小顺序的效果,而无需对原来的字符串数组作任何移动与调整。

#include<stdio.h>
#include<string.h>
/*
    通过对指向字符串数组的指针所指的字符串进行比较
    对ptr指针数组进行排序,完成后只需要根据ptr数组来输出字符串即为有序
*/
void sort(char **p, int n)
{
    int i,j;
    char *t;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(strcmp(p[i],p[j])>0)
            {
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
}

void main()
{
    int i;
    int n=5;
    char *ptr[5];
    char a[5][100] = {0};
    printf("input %d strings:\n", n);
    for(i=0; i<n; i++)
    {
        ptr[i] = a[i];
        scanf("%s", ptr[i]);
    }
    printf("before sort:\n");
    for(i=0; i<n; i++)
    {
        printf("%s\n", a[i]);
    }

    //对指向字符串数组的指针数组进行排序
    sort(ptr, n);
    printf("after sort(*ptr[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%s\n", ptr[i]);
    }
    printf("after sort(a[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%s\n", a[i]);
    }
}










分享到:
评论

相关推荐

    c程序设计习题参考(谭浩强三版)习题参考解答

    10.16用指向指针的指针的方法对5个字符串排序并输出。 89 10.17用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和正整数在主函数中输入。最后在主函数中输出。 90 第11章 结构体与共用体...

    《数据结构》实验

    内容:1、设单链表中存放着n个字符,设计算法,判断该字符串中是否有中心对称关系。例如:xyzzyx、xyzyx都算是中心对称的字符串。 2、设计算法判断一个算术表达式的圆括号是否配对。(提示:对表达式进行扫描,遇‘...

    指针实验实验报告.doc

    利用大小为n的指针数组指向用gets函数输入的n行,每行不超过80个字符。试编写一个 函数,它将每一行中连续的多个空格字符压缩为一个空格字符。在调用函数中输出压缩 空格后的各行,空行不予输出。 编写一个程序,...

    c/c++ 学习总结 初学者必备

    c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的...

    C++课程实验报告一.docx

    3、根据下面的要求一步步写...9、(1)编一程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型、字符串型。要求用重载函数实现 (2)对(1)改用函数模板实现,并进行对比分析。

    关于C的精粹包含至少200个C语言小程序

    023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分...

    你必须知道的495个C语言问题

    例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    *5.6 C++处理字符串的方法——字符串类与字符串变量 5.6.1 字符串变量的定义和引用 5.6.2 字符串变量的运算 5.6.3 字符串数组 5.6.4 字符串运算举例 习题 第6章 指针 6.1 指针的概念 6.2 变量与指针 6.2.1 定义...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    *5.6 C++处理字符串的方法——字符串类与字符串变量 5.6.1 字符串变量的定义和引用 5.6.2 字符串变量的运算 5.6.3 字符串数组 5.6.4 字符串运算举例 习题 第6章 指针 6.1 指针的概念 6.2 变量与指针 6.2.1 定义...

    c语言数据结构实验:掌握线性表的链式存储结构 熟练掌握循环链表的存储特征和建立方法,掌握线性表的链式存储结构 下面是源码的txt

    设单链表中存放着n个字符,设计算法,判断该字符串中是否有中心对称关系。例如:xyzzyx、xyzyx都算是中心对称的字符串。 2、设计算法判断一个算术表达式的圆括号是否配对。(提示:对表达式进行扫描,遇“(进栈,遇“)...

    高级语言课程设计

    题目4 写一个函数用指针型字符串实现两个字符串比较,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,测试之 题目5写一个函数求求圆周率的近视值,精确到小数7位。计算...

    220个经典C语言源码

    031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 ...

    200个经典C程序源码小游戏

    经典的C资源,很全面详细 对于初学者来说,太重要了! 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 ...031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的结构表示 034 用“结构”

Global site tag (gtag.js) - Google Analytics