最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Pipe KWIC
时间:2022-07-02 11:05:00 编辑:袖梨 来源:一聚教程网
// Pipe KWIC.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include<stdlib.h>
using namespace std;
vector<string> out;
HANDLE zwMutex=CreateMutex( //建立临界区
NULL, // default security attributes
FALSE, // initially not owned
NULL);;
void swap(vector<string> &A ,int i,int j);
int comp( string a, string b) ;
void qsort(vector<string> &A,int i,int j);
int partition(vector<string> &A,int l,int r,string& pivot);
DWORD WINAPI ShiftThread(LPVOID );//shift线程
int _tmain(int argc, _TCHAR* argv[])
...{
fstream inf("C:in.txt",ios::in);//输入为C:in.txt
if(!inf)
...{
cerr<<"C:in.txt不能打开"<<endl;
return 1;
}
char *read=new char[512];//readbuffer
HANDLE hThread;
DWORD dwThreadId;
vector<HANDLE> vHANDLE;
while(inf.getline(read,512)) //按行读取数据
...{
hThread=CreateThread(NULL,0, ShiftThread,(LPVOID)read,0,&dwThreadId); //启动线程,移位
if(hThread==NULL)
...{
cout<<"CreateThread() failed: "<<GetLastError()<<'' '';
return 1;
}
vHANDLE.push_back(hThread);
read=new char[512];
}
for(int i=0;i<vHANDLE.size();i++)//等待所有线程结束
...{
WaitForSingleObject(vHANDLE[i],INFINITE);
}
qsort(out,0,out.size()-1);//数据都到达后,开始排序
inf.close();
fstream outf("C:out.txt",ios::out);//输出为C:out.txt
if(!outf)
...{
cerr<<"C:out.txt不能打开"<<endl;
return 1;
}
for(int i=0;i<out.size();i++)
outf<<out[i]<<" ";
cout<<"Success"<<endl;
return 0;
}
void qsort(vector<string> &A,int i,int j)
...{
if(j<=i)
return;
int pivotindex=(i+j)/2;
swap(A,pivotindex,j);
int k=partition(A,i-1,j,A[j]);
swap(A,k,j);
qsort(A,i,k-1);
qsort(A,k+1,j);
}
int partition(vector<string> &A,int l,int r,string& pivot)
...{
do
...{
while(comp(A[++l],pivot)<0);
while((r!=0)&&comp(A[--r],pivot)>0);
swap(A,l,r);
}while(l<r);
swap(A,l,r);
return l;
}
int comp(string a, string b)
...{
for(int i=0;i<a.length();i++)
...{
if(a.at(i)>=65&&a.at(i)<=90)
a.at(i)=a.at(i)+32;
}
for(int i=0;i<b.length();i++)
...{
if(b.at(i)>=65&&b.at(i)<=90)
b.at(i)=b.at(i)+32;
}
return a.compare(b);
//如果a>b返回正数,如果a
}
void swap(vector<string> &A ,int i,int j)
...{
string temp=A[i];
A[i]=A[j];
A[j]=temp;
}
DWORD WINAPI ShiftThread(LPVOID lpParam)
...{
string read=(char *)lpParam;
delete lpParam;
vector<string>inVector;
int i=0;
string str="";
while(read[i]!=''
<
相关文章
- 王者荣耀S38赛季有什么更新 12-25
- 王者荣耀S38赛季有什么更新 王者荣耀S38赛季更新内容介绍 12-25
- 世界之外12.25有什么更新 世界之外12月25日更新内容介绍 12-25
- 光遇12.25红石碎片在哪里 光遇12月25日红石碎片位置攻略 12-25
- 奇迹暖暖绚光引途第二天怎么玩 绚光引途day2庆祝之舞搭配攻略 12-25
- 无限暖暖拍照打卡位置在哪里 无限暖暖世界巡游位置全攻略 12-25
热门栏目
-
php教程
php入门 php安全 php安装 php常用代码 php高级应用 -
asp.net教程
基础入门 .Net开发 C语言 VB.Net语言 WebService -
手机开发
安卓教程 ios7教程 Windows Phone Windows Mobile 手机常见问题 -
css教程
CSS入门 常用代码 经典案例 样式布局 高级应用 -
网页制作
设计基础 Dreamweaver Frontpage js教程 XNL/XSLT -
办公数码
word excel powerpoint 金山WPS 电脑新手 -
jsp教程
Application与Applet J2EE/EJB/服务器 J2ME开发 Java基础 Java技巧及代码