一道上级面试题: 接受单词并按字典序排序
来源:互联网 发布:ubuntu运行程序 编辑:程序博客网 时间:2024/06/04 18:48
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#define LISTMAXSIZE 64
#define STRINGMAXSIZE 1024
struct wordList{ //列表结构
char * befor;
char * body;
char * next;
};
void change(struct wordList * frist , struct wordList * second )
{
char * tempBefor;
char * tempBody;
char * tempNext;
tempBefor = frist->befor;
tempBody = frist->body ;
tempNext = frist->next;
frist->befor = second->befor;
frist->body = second->body ;
frist->next = second->next;
second->befor = tempBefor;
second->body = tempBody ;
second->next = tempNext;
return ;
}
int myStrcmp (char * str1, char * str2) // 类似于str1 - str2
{
int len1 = strlen(str1);
int len2 = strlen(str2);
int set = 0;
int minSet = (len1 < len2) ? len1 : len2;
int result = 0;
while(set <= minSet)
{
result = *(str1 + set) - *(str2 + set);
if(result == 0)
{
set++;
}
else
{
return result;
}
}
return len1 - len2;
}
int main()
{
int flag = 2;
int i = 0;
int j = 0;
char myString [STRINGMAXSIZE] = "sfsfsdf saaaa asdad dfg ";
int myStrSet = 0;
char myStringTemp [STRINGMAXSIZE] = {0};
int myStrTempSet = 0;
char ch ;
char * head = NULL;
struct wordList * myList [LISTMAXSIZE ] = {0};
int myListSet = 0;
while( (ch = myString[ myStrSet ++] )!= '/0')
{
if( ch != ' ' )
{
myStringTemp[myStrTempSet++] = ch;
flag = 1;
}
else if(flag == 1)
{
myStringTemp[myStrTempSet] = '/0';
if(myListSet == 0)
{
myList[myListSet] = malloc(sizeof (struct wordList) + 1);
myList[myListSet]->befor = NULL;
myList[myListSet]->body = strdup(myStringTemp);
}
else
{
myList[myListSet] = malloc(sizeof (struct wordList) + 1);
myList[myListSet]->befor = myList[myListSet-1];
myList[myListSet]->body = strdup(myStringTemp);
}
myListSet++;
myStrTempSet = 0;
flag = 2;
memset(myStringTemp,0, STRINGMAXSIZE);
}
}
for(i = 0 ; i < myListSet-1; i++)
{
for(j = i+1 ; j < myListSet; j++)
{
if( myStrcmp( (myList[i]->body) , (myList[j]->body)) < 0 )// > 降序 < 升序
{
continue;
}
else
{
change(myList[i] , myList[j]);
}
head = myList[i];
}
if(i == 0)
{
head = myList[i];
}
else
{
myList[i-1]->next = myList[i];
}
}
for(i = 0 ; i < myListSet; i++)
{
printf("%s/n", (myList[i]->body));
}
return 0;
}
- 一道上级面试题: 接受单词并按字典序排序
- 将英文句子的单词拆分,并按按字典顺序排序逐个输出单词
- 单词按照字典序排序
- 一道关于排序的面试题
- 一道面试题--翻转英文句子中的单词顺序
- 百度面试题--给定一个单词,从字典查找该单词的所有兄弟单词
- 华为面试题-字典序
- 一道面试题:请写sql查询出,成绩小于60的同学的姓名和平均分,并按平均分排序
- 由一道面试题到并查集
- 某公司一道面试题:赛车名次, 桶排序
- 一道关于排序算法的java面试题
- 一道特殊的排序面试题(交换思想活学活用)
- 一道微软面试题
- 一道面试题
- 华为一道面试题
- 一道面试题
- 一道面试题
- 一道sql面试题
- 介绍Windows/Linux下Oracle数据库进程如何启动和关闭
- map的应用(swap_word)
- Windows下安装Object C开发环境,及Hello Word
- mianArg.cpp 使用mian函数的参数 f0512.cpp
- a:visited 权重
- 一道上级面试题: 接受单词并按字典序排序
- 用VC写DLL中"error LNK2005: _DllMain@12 already defined"的错误
- (转载)Ext2 文件系统的硬盘布局
- .net 调用scilab 示例
- sql系统表syscolumns中 xtype 所有值对应的类型名称
- sql varchar 长度问题
- Ubuntu-安装GVIM7.3
- 错误解决:Skipped installing application listeners due to previous error(s)
- 数据库上机作业(一)