程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 數據結構之---C語言實現銀行模擬(離散化)

數據結構之---C語言實現銀行模擬(離散化)

編輯:關於C語言

數據結構之---C語言實現銀行模擬(離散化)


#include 
#include 
#include 
#define MAX_WIN 20
#define MAX_STAY 100
typedef struct customer *link;
struct customer
{
	int stay;
	link next;
};

link GUY(int stay, link next)
{
	link c = malloc(sizeof *c);
	c->stay = stay;
	c->next = next;
	return c;
}


link win[MAX_WIN];
void morning()
{
	int i;
	for(i = 0; i < MAX_WIN; i++)
	{
		win[i] = NULL;
	}
}


void come(int w, int stay)
{
	if(win[w] == NULL)
	{
				win[w] = GUY(stay, NULL);
				win[w]->next = win[w];
	}
	else
			win[w] = win[w]->next = GUY(stay, win[w]->next);
}

void leave(int w)
{
	if(win[w]->next == win[w])
	{
		free(win[w]);
		win[w] = NULL;
	}
	else
	{
		link t = win[w]->next;
		win[w]->next = t->next;
		free(t);
	}
			
}


void guys()
{
	int i;
	link t;
	system(clear);
	for(i = 0; i < MAX_WIN; i++, puts( ))
	{
			printf(WIN%3d:_, i);
			if((t = win[i]) == NULL)
					continue;
			for(; t->next != win[i]; t = t->next)
			{
				printf(%4d, t->next->stay);
			}
	}
	Sleep(1);
}	

void later()
{
	int i;
	for(guys(), i = 0; i < MAX_WIN; i++)
	{	
		if(win[i] == NULL)
				continue;
		if(win[i]->next->stay > 0)
				(win[i]->next->stay)--;
		else
				leave(i);
	}
}



int main()
{
	srand(time(NULL));
	for(morning; ;later())
	{
		come(rand()%MAX_WIN, rand()%MAX_STAY+1);
	}
	return 0;
}
	


 

 

由於這裡是生成的隨機數,所以程序會一直在變化。按住ctrl +c 終止程序

 

\

 

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved