百度面试题及我的解答(5)-2 step5 & step6 代码
2009-12-06 19:31
316 查看
函数Step5TraverseProcess:
函数Step6TraverseProcess:
void Step5TraverseProcess(WORD_NODE* plist, ostream& out) { WORD_NODE* pnext = plist; vector<WORD_NODE*> VarWordsList; vector<WORD_NODE*>::iterator i; // list<WORD_NODE*> 使用STL链表保存结果,链表的每一个节点是WORD_NODE链表,这个WORD_NODE链表中保存的都是变位词 // 遍历WORD_NODE List,读取每一个WORD; // 遍历VarWordsList;比较wordNode->SortedStr和VarWordsList的每一个节点,相同则插入到该节点。 // 遍历结束没有找到,则插入到VarWordsList末尾。 do { bool bFoundVarNode = false; for ( i = VarWordsList.begin(); i < VarWordsList.end(); i++ ) { WORD_NODE *pSortedWord = (*i); if ( 0 == strcmp(pSortedWord->sorted_str, pnext->sorted_str) ) { WORD_NODE* ptemp = pnext; pnext = pnext->next; WORD_NODE* ptemp2 = pSortedWord->next; pSortedWord->next = ptemp; ptemp->next =ptemp2; bFoundVarNode = true; break; } } if ( !bFoundVarNode ) { WORD_NODE *ptemp = pnext; pnext = pnext->next; ptemp->next = NULL; VarWordsList.push_back(ptemp); } } while (NULL != pnext); for ( i = VarWordsList.begin(); i < VarWordsList.end(); i++ ) { vector<char*> str_arr; vector<char*>::iterator j; WORD_NODE *pWordList = (*i); // out << pWordList->sorted_str << ":/t"; while ( NULL != pWordList ){ bool bSameWord = false; for ( j = str_arr.begin(); j < str_arr.end(); j++) { char* pword = (*j); if ( 0 == strcmp(pword, pWordList->str) ){ bSameWord = true; } } if ( !bSameWord) { out << pWordList->str << "/t"; str_arr.push_back(pWordList->str); } pWordList = pWordList->next; } out << "/n"; } }
函数Step6TraverseProcess:
#define VARWORDS_SIZE 100 void Step6TraverseProcess(WORD_NODE* plist, ostream& out) { WORD_NODE* pnext = plist; WORD_NODE* VarWordsList[VARWORDS_SIZE]; int cur_pos=0; memset(VarWordsList, 0, sizeof(WORD_NODE*)*VARWORDS_SIZE); // list<WORD_NODE*> 使用STL链表保存结果,链表的每一个节点是WORD_NODE链表,这个WORD_NODE链表中保存的都是变位词 // 遍历WORD_NODE List,读取每一个WORD; // 遍历VarWordsList;比较wordNode->SortedStr和VarWordsList的每一个节点,相同则插入到该节点。 // 遍历结束没有找到,则插入到VarWordsList末尾。 WORD_NODE head; WORD_NODE* phead = &head; memset(phead, 0, sizeof(WORD_NODE)); do { bool bFoundVarNode = false; for ( int i = 0; i < VARWORDS_SIZE; i++ ) { if ( NULL == VarWordsList[i] ){ break;} WORD_NODE *pSortedWord = VarWordsList[i]; if ( 0 == strcmp(pSortedWord->sorted_str, pnext->sorted_str) ) { WORD_NODE* ptemp = pnext; pnext = pnext->next; ptemp->next = NULL; phead = &head; phead->next = pSortedWord; bool bInOutList = false; while ( NULL != phead->next ) { int iRet = strcmp(phead->next->str, ptemp->str); if ( iRet >= 0){ WORD_NODE* ptemp2 = phead->next; phead->next = ptemp; ptemp->next = ptemp2; bInOutList = true; VarWordsList[i]=head.next; break; } phead = phead->next; } if ( !bInOutList ){ phead->next = ptemp; } bFoundVarNode = true; break; } } if ( !bFoundVarNode ) { WORD_NODE *ptemp = pnext; pnext = pnext->next; ptemp->next = NULL; if ( cur_pos >= VARWORDS_SIZE ){ cerr << "VarWordsList overflow" << endl; exit(-3); } VarWordsList[cur_pos++] = ptemp; } } while (NULL != pnext); for (int i = 0; i < VARWORDS_SIZE; i++ ) { if ( NULL == VarWordsList[i] ){ break;} WORD_NODE* pwordlist = VarWordsList[i]; do { if ( NULL == pwordlist->next ) { out << pwordlist->str << " "; break;} if ( 0 != strcmp(pwordlist->str, pwordlist->next->str) ) { out << pwordlist->str << " ";} // out << pwordlist->str << " "; pwordlist = pwordlist->next; } while ( NULL != pwordlist ); out << "/n"; } }
相关文章推荐
- 百度面试题及我的解答(4) 补class HashMethod1的代码
- 百度面试题及我的解答(4) 补 buffer模板类代码
- php 面试题&解答
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 百度面试题及我的解答(1)
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- [天池代码分享&思路沉淀]机器学习常见的算法面试题总结
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 面试题:单词翻转(代码简洁&效率)
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 面试题: 请用代码来计算字符串"I'm go to swimming"中每一个字母出现的次数,并打印出来
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 为什么使用百度编辑器时 前台代码不能放在 class<table >中 如果放进去的话,会发生 百度编辑的内容显示不出来
- Java下载网页代码 & 判断网页是否被百度收录
- 史上最强大的PHP Web面试题(会做可进百度)----我的解答JS版本
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- java面试题--百度华为的面试题---直接贴代码了
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯