巧妙的字符串排序
2017-04-14 09:14
225 查看
/* sort_str.c -- 读入字符串,并排序字符串 */
#include <stdio.h>
#include <string.h>
#define SIZE 81 /* 限制字符串长度, 包括 \0 */
#define LIM 20 /* 可读入的最多行数 */
#define HALT "" /* 空字符串停止输入 */
void stsrt(char *string [], int num); /* 字符串排序函数 */
char * s_gets (char * st, int n);
int main(int argc, const char *argv[])
{
char input[LIM] [SIZE]; /* 储存输入的数组 */
char *ptstr[LIM]; /* 内含指针变量的数组*/
int ct = 0; /* 输入计数 */
int k; /* 输出计数 */
printf("Iuput up to %d lines, and I will sort them.\n", LIM);
printf("TO stop, press the Enter key at a line's start.\n");
while (ct < LIM && s_gets(input[ct], SIZE ) != NULL && input[ct][0] != '\0')
{
ptstr[ct] = input[ct]; /* 设置指针指向字符串 */
ct++;
}
stsrt(ptstr, ct); /* 字符串排序函数 */
puts("\nHere's the sorted list:\n");
for (k = 0; k < LIM; k++)
puts (ptstr[k]); /* 排序后的指针 */
return 0;
}
/* 字符串--指针--排序函数*/
/* 核心算法 */
void stsrt(char *string [], int num)
{
char *temp;
int top, seek;
for (top = 0; top < num - 1; top++) /* 遍历输入的字符串数组*/
for (seek = top + 1; seek < num; seek++)
if (strcmp(string[top],string[seek]) > 0) /*排序算法*/
{
temp = string[top];
string[top] = string[seek];
string[seek] = temp;
}
}
char * s_gets (char * st, int n)
{
char * ret_val;
int i = 0;
ret_val = fgets (st, n, stdin);
if (ret_val)
{
while (st[i] != '\n' && st [i] != '\0')
i++;
if (st[i] = '\n')
st[i] = '\0';
else
while ( getchar() != '\n')
continue;
}
return ret_val;
}
/*总结:该程序的巧妙之处在于排序的是指向字符串的指针,而不是字符串本身*/
#include <stdio.h>
#include <string.h>
#define SIZE 81 /* 限制字符串长度, 包括 \0 */
#define LIM 20 /* 可读入的最多行数 */
#define HALT "" /* 空字符串停止输入 */
void stsrt(char *string [], int num); /* 字符串排序函数 */
char * s_gets (char * st, int n);
int main(int argc, const char *argv[])
{
char input[LIM] [SIZE]; /* 储存输入的数组 */
char *ptstr[LIM]; /* 内含指针变量的数组*/
int ct = 0; /* 输入计数 */
int k; /* 输出计数 */
printf("Iuput up to %d lines, and I will sort them.\n", LIM);
printf("TO stop, press the Enter key at a line's start.\n");
while (ct < LIM && s_gets(input[ct], SIZE ) != NULL && input[ct][0] != '\0')
{
ptstr[ct] = input[ct]; /* 设置指针指向字符串 */
ct++;
}
stsrt(ptstr, ct); /* 字符串排序函数 */
puts("\nHere's the sorted list:\n");
for (k = 0; k < LIM; k++)
puts (ptstr[k]); /* 排序后的指针 */
return 0;
}
/* 字符串--指针--排序函数*/
/* 核心算法 */
void stsrt(char *string [], int num)
{
char *temp;
int top, seek;
for (top = 0; top < num - 1; top++) /* 遍历输入的字符串数组*/
for (seek = top + 1; seek < num; seek++)
if (strcmp(string[top],string[seek]) > 0) /*排序算法*/
{
temp = string[top];
string[top] = string[seek];
string[seek] = temp;
}
}
char * s_gets (char * st, int n)
{
char * ret_val;
int i = 0;
ret_val = fgets (st, n, stdin);
if (ret_val)
{
while (st[i] != '\n' && st [i] != '\0')
i++;
if (st[i] = '\n')
st[i] = '\0';
else
while ( getchar() != '\n')
continue;
}
return ret_val;
}
/*总结:该程序的巧妙之处在于排序的是指向字符串的指针,而不是字符串本身*/
相关文章推荐
- 巧妙的字符串排序,保证你不看,绝对想不到
- 排序含有数字的字符串:一个巧妙地方法
- 排序含有数字的字符串:一个巧妙地方法【转】
- 字符串排序输出函数
- 按照字符串排序的Sql写法
- java中文字符串按拼音排序 代码
- 用Array.Sort对字符串进行排序的问题
- search花絮之文本字符串搜索结果的排序
- 按不同国家语言进行字符串排序
- 字符串技巧排序
- C#优化字符串操作(7)--输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法
- 作个把字符插入到一个按升序排序的字符串中的方法
- 填充指定字符串的每一节到指定长度,不够的在左恻用0补足,并将分隔符"-"去除,可用于排序的函数
- Hibernate不支持Oracle对字符串排序后的基于rownum的取数方式
- 字符串技巧排序
- java中文字符串按拼音排序代码
- 字符串排序
- 对字符串数组进行排序,在冒泡法排序中使用compareTo()方法确定排序的顺序。
- acm 试题 字符串排序
- javascript 字符串简单排序