示例#1
0
void clean_up_unknown() 
{
    if(verbose_lvl)
	cout << indent(2) << "Cleaning up invalid hosts." << endl;
    
    // create a list of all links from an unknown to a node, and a list of
    // links from a node to an unkown and store them in a map
    LinkMap to_u;
    LinkMap from_u;
    fill_maps(network, to_u, from_u);
    
    // give all members of an non-empty intersection, of two elements of both
    // maps, the same name
    for(LinkMap_iter to_iter = to_u.begin(); to_iter != to_u.end(); to_iter++)
	for(LinkMap_iter from_iter = from_u.begin(); from_iter != from_u.end();
	    from_iter++)
	    if(to_iter->first->name() != from_iter->first->name()) {
		
		HostPList hl = intersect(to_iter->second, from_iter->second);
		
		if(!hl.empty())
		    equilize_names(network, hl);
	    }
    
    // clean up trash
    remove_from_list(hostlist, trash);

    network.sort();
    network.unique();    
}
示例#2
0
int main(int argc, char* argv[])
{
	LinkList<Node> linklist;

	Node* a1 = new Node;
	a1->a = 1;
	linklist.Push_Back(a1);
	
	Node* a2 = new Node;
	a2->a = 2;
	linklist.Push_Back(a2);

	Node* a3 = new Node;
	a3->a = 3;
	linklist.Push_Back(a3);

	Node* a4 = new Node;
	a4->a = 4;
	linklist.Push_Back(a4);

	Node* a5 = new Node;
	a5->a = 5;
	linklist.Push_Back(a5);

	while(!linklist.IsEmpty())
	{
		printf("dump:%d\n", linklist.Dump());
		Node* temp = linklist.Front();
		printf("value:%d\n", temp->a);
		linklist.Pop_Front();
	}

	printf("end\n");
	return 0;
}
示例#3
0
int init() {
  linklist[0] = 1;
  linklist.pushback(2);
  linklist.pushback(3);
  linklist.pushback(4);
  linklist.pushback(5);
  return 0;
}
示例#4
0
void Display(LinkList<T> &list)
{
    cout << list.Count() << " element(s): ";
    for (int i = 1; i <= list.Count(); i++)
    {
        cout << list.Get(i) << " ";
    }
    cout << endl;
}
示例#5
0
static void fill_maps(LinkList& hl, LinkMap& to, LinkMap& from) 
{
    for(LinkList_iter hl_iter = hl.begin(); hl_iter != hl.end(); hl_iter++) {
	if(hl_iter->a->unknown)
	    to[hl_iter->b].push_back(hl_iter->a);

	if(hl_iter->b->unknown)
	    from[hl_iter->a].push_back(hl_iter->b);
    }
}
示例#6
0
void test_deleteDuplicates(){
    LinkList link;
    int arr[] = {1, 1, 1, 1};
    vector<int> ivec(arr, arr+4);
    ListNode *p1 = link.createListNode(ivec);
    link.printListNode(p1);
    p1 = link.deleteDuplicates(p1);
    link.printListNode(p1);
    cout<<endl; 
}
示例#7
0
int main()
{
	LinkList<int> intlinklist;
	for (int i = 0; i < 5; i++)
	{
		intlinklist.Insert(i, i);
	}
	intlinklist.PrintList();
	system("pause");
}
示例#8
0
void test4()
{
	LinkList list;
	list.PushBack(4);
	list.PushBack(1);
	list.PushBack(3);
	list.PushBack(2);
	cout << list << endl;
	list.BubbleSort();
	cout << list << endl;

}
示例#9
0
int console_blit_completion(ContextPtr env, char *cmd) {
    if(!cmd) return 0;

    ViewPortPtr screen = getSelectedScreen();
    if(!screen) {
        ::error("no screen currently selected");
        return 0;
    }

    // Find completions
    BlitPtr exactBlit;
    LinkList<Blit> retList;
    LinkList<Blit> &list = screen->getBlitter()->getBlits();
    std::string cmdString(cmd);
    std::transform(cmdString.begin(), cmdString.end(), cmdString.begin(), ::tolower);
    std::copy_if(list.begin(), list.end(), retList.begin(), [&] (BlitPtr blit) {
                     std::string name = blit->getName();
                     std::transform(name.begin(), name.end(), name.begin(), ::tolower);
                     if(name == cmdString) {
                         exactBlit = blit;
                     }
                     return name.compare(cmdString) == 0;
                 });

    if(retList.empty()) return 0;

    if(exactBlit != NULL) {
        snprintf(cmd, MAX_CMDLINE, "%s = ", exactBlit->getName().c_str());
        return 1;
    }

    if(cmdString.empty()) {
        notice("List available blits");
    } else {
        notice("List available blits starting with \"%s\"", cmd);
    }

    int c = 0;
    char tmp[256];
    std::for_each(retList.begin(), retList.end(), [&] (BlitPtr b) {
                      if(c % 4 == 0) {
                          if(c != 0) {
                              ::act("%s", tmp);
                          }
                          tmp[0] = '\0';
                      }
                      strncat(tmp, "\t", sizeof(tmp) - 1);
                      strncat(tmp, b->getName().c_str(), sizeof(tmp) - 1);
                      ++c;
                  });
    return c;
}
示例#10
0
//gives a weigth for a node
int HostClass::host_count() const
{
    //kick out doubles
    network.sort(); network.unique();

    //run through network and count the number of occurences
    int hit_count = 0;
    for(LinkList_iter li = network.begin(); li != network.end(); li++) 
	if(li->a->ip == ip || li->b->ip == ip)
	    hit_count++;

    return hit_count;
}   
示例#11
0
TEST(rearrangeTest, rearrage){
    LinkList* lst = new LinkList();
    int input[] = {9,3,7,1,6,5,2,8};
    int result[] = {2,1,3,9,7,6,5,8};
    for (int i = 0; i < 8; i++){
        lst->addToTail(input[i]);
    }
    rearrange(lst, 4);
    for (int i = 0; i < lst->length; i++){
        EXPECT_EQ(result[i], lst->getAtIndex(i));
    }
    
}
示例#12
0
TEST(rearrangeTest, rearrageOneElement){
    LinkList* lst = new LinkList();
    int input[] = {3};
    int result[] = {3};
    for (int i = 0; i < 1; i++){
        lst->addToTail(input[i]);
    }
    rearrange(lst, 4);
    for (int i = 0; i < lst->length; i++){
        EXPECT_EQ(result[i], lst->getAtIndex(i));
    }
    
}
示例#13
0
void test2()
{
	LinkList list;
	list.PushBack(1);
	list.PushBack(2);
	list.PushBack(3);
	list.PushBack(4);
	cout << list << endl;
	list.PopBack();
	cout << list << endl;
	list.PopFront();
	cout << list << endl;

}
const LinkList<T> & LinkList<T>::operator =(const LinkList<T> &rhs)
//PreCondition: rhs != this
//PostCondition: rhs is copyed into this
{
	if(this!=&rhs)
	{
		resize(rhs.length());
		for(int i=0;i<rhs.length();i++)
		{
			at(i)=rhs.atc(i);
		}
	}
	return *this;
}
示例#15
0
void test1()
{
	LinkList list;
	list.PushBack(1);
	list.PushBack(2);
	list.PushBack(3);
	list.PushBack(4);
	cout << list << endl;
	LinkList l2(list);
	cout << l2 << endl;
	list.PushFront(0);
	cout << list << endl;

}
示例#16
0
int main()
{
	int num;
	cin >> num;

	long long *Hash1 = new long long[num];           //哈希表1
	long long *Hash2 = new long long[num];           //哈希表2
	LinkList *NumList = new LinkList[Prime];         //储存相同字符串序号
	string *str = new string[num];                   //储存输入字符串
	int *list = new int[Prime];                      //作比较时用
	for (int i = 0; i < Prime; ++i)
		list[i] = -2;

	for (int i = 0; i < num; ++i)                    //每输入一个字符串,对应得到两个哈希值
	{
		cin >> str[i];
		Hash1[i] = BKDRHash(str[i], str[i].length());
		Hash2[i] = RSHash(str[i], str[i].length());
		if (list[Hash1[i]] == -2)                    //哈希值1还没有出现过
		{
			list[Hash1[i]] = i;
			//设置头结点
			NumList[list[Hash1[i]]].setNum(list[Hash1[i]]);
		}
		else if (Hash2[list[Hash1[i]]] == Hash2[i])  //哈希值2相等
			NumList[list[Hash1[i]]].add(i);          //加点
	}

	bool output = false;                             //判断是否有相同字符串
	LinkList *p;
	for (int i = 0; i < Prime; ++i)
	{
		p = &NumList[i];
		if (p->NextNode() != NULL)
		{
			output = true;                           //有相同字符串
			for (; p != NULL; p = p->NextNode())
			{
				p->outputNum();                      //输出
				cout << " ";
			}
			cout << endl;
		}
	}

	if (!output)                                     //没有相同字符串
		cout << -1;
	return 0;
}
示例#17
0
void test1()
{
	LinkList mylist;
	mylist.push_back(1);
	mylist.push_back(2);
	mylist.push_back(3);
	LinkList mylist2(mylist);
	LinkList mylist3;
	mylist3 = mylist2;
	cout << mylist2 << endl;
	cout << mylist << endl;
	cout << mylist3 << endl;


}
示例#18
0
	void operator()(const boost::match_results<std::string::const_iterator>& elem) {
		Link l;
		l.target = new string(elem.str(1));
		convertLowerInplace(*l.target);
		l.resolved = false;
		links.push_back(l);
	}
示例#19
0
int console_filter_completion(ContextPtr env, char *cmd) {
    if(!cmd) return 0;

    // Find completions
    FilterPtr exactFilter;
    LinkList<Filter> retList;
    LinkList<Filter> &list = env->getFilters();
    std::string cmdString(cmd);
    std::transform(cmdString.begin(), cmdString.end(), cmdString.begin(), ::tolower);
    std::copy_if(list.begin(), list.end(), retList.begin(), [&] (FilterPtr filter) {
                     std::string name = filter->getName();
                     std::transform(name.begin(), name.end(), name.begin(), ::tolower);
                     if(name == cmdString) {
                         exactFilter = filter;
                     }
                     return name.compare(cmdString) == 0;
                 });

    if(retList.empty()) return 0;

    if(exactFilter != NULL) {
        ::notice("%s :: %s", exactFilter->getName().c_str(), exactFilter->getDescription().c_str());
        snprintf(cmd, MAX_CMDLINE, "%s", exactFilter->getName().c_str());
        return 1;
    }

    if(cmdString.empty()) {
        notice("List available filters");
    } else {
        notice("List available filters with \"%s\"", cmd);
    }

    int c = 0;
    char tmp[256];
    std::for_each(retList.begin(), retList.end(), [&] (FilterPtr f) {
                      if(c % 4 == 0) {
                          if(c != 0) {
                              ::act("%s", tmp);
                          }
                          tmp[0] = '\0';
                      }
                      strncat(tmp, "\t", sizeof(tmp) - 1);
                      strncat(tmp, f->getName().c_str(), sizeof(tmp) - 1);
                      ++c;
                  });
    return c;
}
示例#20
0
void parseLinks(string s, LinkList& l) {
	const boost::regex linkRE("\\[\\[([^|\\]]+)(?:\\|[^\\]]+)?\\]\\]", boost::regex::perl);
	boost::sregex_iterator itr(s.begin(), s.end(), linkRE);
	boost::sregex_iterator end;
	linkListBuilder builder;
	builder = for_each(itr, end, builder);
	l.swap(builder.links);
}
示例#21
0
BLIT schiffler_mulbyte(void *src, void *dst, int bytes, LinkList<ParameterInstance> &params) {
    unsigned char v;
    {
        v = (unsigned int) *(float*)(params.front()->get());  // only one value
    }

    SDL_imageFilterMultByByte((unsigned char*)src, (unsigned char*)dst, bytes, v);
}
示例#22
0
int main()
{
	int an[] = {1,2,3,4,5,6};
	int len = sizeof(an)/sizeof(an[0]);

	LinkList<int> mylist;

	for(int i=0;i<len;++i)
	{
		//mylist.push_front(an[i]);
		mylist.push_back(an[i]);
	}
	mylist.show_list();
	
	mylist.reverse();
	mylist.show_list();

	for(i=0;i<len+1;++i)
	{
		mylist.pop_front();
		//mylist.pop_back();
		mylist.show_list();
	}
	return 0;
}
示例#23
0
BLIT schiffler_binarize(void *src, void *dst, int bytes, LinkList<ParameterInstance> &params) {
    unsigned char v;
    {
        v = (unsigned int) *(float*)(params.front()->get());  // only one value
    }

    SDL_imageFilterBinarizeUsingThreshold
        ((unsigned char*)src, (unsigned char*)dst, bytes, v);
}
示例#24
0
int TCstring::compare(LinkList<TCHAR> input, bool caseSensitive)const{
	int length;
	bool equalLength = false;
	if (getLength() < input.getLength()){
		length = getLength();
	}
	else if (getLength() == input.getLength()){
		length = getLength();
		equalLength = true;
	}
	else{
		length = input.getLength();
	}
	TCHAR SS, inp;
	for (int i = 1; i <= length; i++){
		SS = SuperString.getRecord(i);
		inp = input.getRecord(i);
		if(!caseSensitive){
			SS = towupper(SS);
			inp = towupper(inp);
		}
		
		if (SS == inp){
			continue;
		}
		else if (SS > inp){
			return -1;
		}
		else{
			return 1;
		}
	}
	if (equalLength)//it got out of the loop without determining a winner. so they're equal, as long as the length is equal
		return 0;
	else{//if the length is not equal, then the shorter one wins.
		if (length == getLength()){
			return -1;
		}
		else{
			return 1;
		}
	}
}
void customer_arrived()
{
	cout << "======================一位客户到达======================" << endl;
	//处理客户到达事件,en.NType=0
	QNode *qe = new QNode();	//客户到达时间,处理业务所需要的时间,指向下一个对象
	int durtime, intertime;	//一个是处理业务所需要的时间,一个是下一个客户到达的所需时间

	++CustomerNum;	//人数++

	//参数两个随机数,代表处理业务需要的时间,下一个客户到达的时间
	durtime = rand() % (MAX_TIME + 1);	//这个额是[0 ~ MAX_TIME(30)]
	intertime = rand() % (INTERVAL + 1);	//这个是下一个客户进入银行要等待的时间[0~INTERVAL(5)]

	//如果银行没有关门,我们要产生下一个事件到达
	int t = en.getOccurTime() + intertime;
	if (t < closeTime)
	{
		//插入事件表下一个事件
		Event ei;
		ei.setOccurTime(t);
		ei.setNType(0);
		ev.insert(ei);
	}

	int i = min_queue(q);	//求得最短的队列,注意我们有1到4队列,没有0队列
	//吧事件插入到最短的队列中
	//首先我们的事件发生时间(事件到达时间)和执行时间
	qe->setArrivalTime(en.getOccurTime());
	qe->setDuration(durtime);	//时间的执行时间
	q[i]->enQueue(qe);	//吧qe插入到链表中

	//判断我们插入的队列是不是长度是1,如果是代表在插入之前这个窗口是空的,这个的作用
	//客户离开事件,是要首先计算该客户在银行逗留的时间,然后从队列中删除该客户之后查看队列是否为空,若不为空则设定一个新的对头客户离开事件
	en.setOccurTime(en.getOccurTime() + durtime);	//设置新的时间到达事件
	en.setNType(i);	//0代表新的客户到达,1是1号窗口客户离开,2是2号窗口客户离开,3是3号窗口客户离开,4是。。。,这里是客户到达事件,所以是0
	if (q[i]->length() == 1)
	{
		//吧第i个队列的离开事件插入事件表,等会用来计算窗口的客户总时间
		ev.insert(en);
	}

}//customer_arrived()
示例#26
0
	Simulater(int i,int j,int k){        //  在构造函数中创建每个窗口的个数
		int jj,kk;
		id_win = 0;
		id_user = 0;
		NormalBankWindow *NBW;
		VIPBankWindow *VNW;
		OfficialBankWindow *OBW;
		for(; id_win < i;id_win++){
			NBW = new NormalBankWindow(id_win);
			nbw.add(*NBW);
		}
		for(jj = 0; jj < j;jj++){
			VNW = new VIPBankWindow(id_win++);
			vbw.add(*VNW);
		}
		for(kk = 0; kk < k;kk++){
			OBW = new OfficialBankWindow(id_win++);
			obw.add(*OBW);
		}
	}
示例#27
0
int main() {
	LinkList<A> l;
    

	for (int i = 0; i < 10; i++) {
        cout << "push_back: " << i << endl;
		l.push_back(A(i));
	}

    cout << "end push_back" << endl;

    LinkList<A>::iterator iter = l.begin();
    LinkList<A>::iterator end = l.end();

	while (iter != end) {
        cout << "iter: " << (*(iter++)).getNum() << endl;
    }
    
    cout << "end: " << l.size() << endl;
	return 0;
}
示例#28
0
//1 reads in from file. Will need to call other functions depending on the commands listed.
void readCommand(char* argv[])
{
	LinkList<string> list;
	ifstream inFile;
	inFile.open(argv[1]);
	string command;
	int index = 0;
	string item;
	ofstream outFile;
	outFile.open(argv[2]);

	while (inFile >> command )
	{
		if (command == "insert")
		{
			inFile >> index >> item;
			list.insert(index, item);
			outFile << "insert " << index << " " << item <<endl;
			//call insert command function
		}
		else if (command == "remove")
示例#29
0
int main()
{
	LinkList test;

	
	test.add(2);
	test.add(4);
	test.add(6);
	test.add(8);
	test.add(14);

	cout << test.isMember(3) << endl;
	cout << test.isMember(8) << endl;
	cout << test.isMember(4) << endl;
	cout << test.isMember(12) << endl;
	test.print();

	test.remove(8);
	test.print();

	return 0;
}
LinkList<T>::LinkList(LinkList &tcopy)
//PostCondition: LinkList is a copy of tcopy
{
		head=NULL;
	tail=NULL;

	int i;
	NODE<T> *newNode;
	newNode=NULL;

	for(i=0;i<tcopy.length();i++)
	{
		newNode=new NODE<T>;

		if(!newNode)
		{
			cerr<<"Out Of Memory!"<<endl;
			exit(1);
		}
		else
		{
			if(head)
			{
				tail->next=newNode;
				tail=tail->next;
				tail->next=NULL;
				tail->data=tcopy[i];
			}
			else
			{
				head=newNode;
				tail=head;
				head->data=tcopy[i];
			}
		}
	}

	mylength=tcopy.length();
}