摘要:
sem odd=0,even=0,empty=n,mutex1; p1() { x=produce(); p(empty); p(mutex); put(); v(mutex); if(x%2==0) v(even); else v(odd); } p2() { p(odd); p(mutex); getodd(); v(mutex); v(empty); countodd(); } p3() { 阅读全文
posted @ 2019-10-20 19:26
bestAndBest
阅读(130)
评论(0)
推荐(0)
摘要:
sem mutex=1;//取号机互斥信号量 sem empty=10;//空余座位信号量 sem full=0;//已占座位信号量 sem service=0//等待叫号数量 顾客() { p(empty); p(mutex); 取号 v(mutex); v(full); p(service); 获取服务 } 柜员() { whi... 阅读全文
posted @ 2019-10-20 19:21
bestAndBest
阅读(184)
评论(0)
推荐(0)
摘要:
sem empty=500; sem mutex=1; 参观者 { p(empty); p(mutex); 进门; v(mutex); 参观 p(mutex); 出门 v(mutex); v(empty); } 阅读全文
posted @ 2019-10-20 19:16
bestAndBest
阅读(138)
评论(0)
推荐(0)
摘要:
sem mutex1=1; sem mutex2=1; sem empty=1000; sem full=0; producer() { while(1) { 生产一个产品 p(empty); p(mutex2); 放入缓冲区 v(mutex2); v(full); } } consumer() { while(1) { p(mutex1); for(int i=0;i<=10;++i)//连续取 阅读全文
posted @ 2019-10-20 19:12
bestAndBest
阅读(87)
评论(0)
推荐(0)
摘要:
sem full_a=x; sem empty_a=m-x; sem full_b=y; sem empty_b=n-y; sem mutex_a=1; sem mutex_b=1; A{ while(True) { p(full_a); p(mutex_a); 从a邮箱取邮件 v(mutex_a); v(empty_a); 回答一个问题并提出新问题 p(empty_b); p(mutex_b); 阅读全文
posted @ 2019-10-20 19:03
bestAndBest
阅读(184)
评论(0)
推荐(0)
摘要:
typedef struct { float a; float b; }cnum; cnum x,y,z; cnum add(cnum p,cnum q) { cnum s; s.a=p.a+q.a; s.b=p.b+q.b; return s; } sem mutex1=1;//t1和t2变量y互斥访问 sem mutex2=1;//t2与t3变... 阅读全文
posted @ 2019-10-20 18:52
bestAndBest
阅读(229)
评论(0)
推荐(0)
摘要:
sem bowl; sem chopsticks[n]; for(int i=0;i<n;i++) chopsticks[i].value=1; bowl.value=min(n-1,m)//bowl.value<=n-1,确保不死锁 while(True) { p(bowl); p(chopsticks[i]); p(chopsticks[(i+1]MOD n); 就餐; v(chopstick 阅读全文
posted @ 2019-10-20 16:42
bestAndBest
阅读(180)
评论(0)
推荐(0)
摘要:
思想:采用两个指针交替进行,找到中间节点;将单链表的后半段节点原地逆置;将单链表前后两段中依次各取一个节点,按要求重排; 代码: 阅读全文
posted @ 2019-10-20 16:31
bestAndBest
阅读(265)
评论(0)
推荐(0)
摘要:
思想:定义两个指针变量p,q,初始时均指向头节点的下一个节点,p指针沿着链表移动,当p指针移动到第k节点时,q与p同步移动,当p移动到最后一个节点时q为所求节点 代码: 阅读全文
posted @ 2019-10-20 16:15
bestAndBest
阅读(299)
评论(0)
推荐(0)
摘要:
算法思想:数组全部逆置,前n-p个元素和后p个元素全部逆置 代码: 阅读全文
posted @ 2019-10-20 15:51
bestAndBest
阅读(179)
评论(0)
推荐(0)
摘要:
思想:分别求A,B的中位数,若a=吧,则a或b为所求中位数,否则,舍弃a,b中最小者所在序列之较小一半,同时舍弃较大者所在序列较大一半,要求两次舍弃元素个数相同,重复上述过程,直到两个序列中只含一个元素为止,则较小者为所求中位数。 代码: 阅读全文
posted @ 2019-10-20 15:34
bestAndBest
阅读(266)
评论(0)
推荐(0)
摘要:
思想:假设一个链表比另一个链表长k个节点,我们先在长链表上遍历k个节点,之后同步遍历两个链表 1,遍历两个链表求出他们的长度 2,比较长度,找到较长链表 3,先遍历长链表的k个节点 4,同步遍历两个链表,直到找到相同节点或链表结束 代码: 阅读全文
posted @ 2019-10-20 15:17
bestAndBest
阅读(492)
评论(0)
推荐(0)
摘要:
算法思想:计数排序,建立一个辅助数组,遍历数组a,有一个数就把辅助数组相应位置元素+1,最后遍历一遍数组,找到出现最多的主元素 代码: 阅读全文
posted @ 2019-10-20 15:03
bestAndBest
阅读(222)
评论(0)
推荐(0)
摘要:
思想:基于先序遍历,用一个静态变量保存WPL把每个节点的深度作为参数传递 若为叶子结点,WPL=该节点深度*权值,若非叶子节点则递归调用 代码: 阅读全文
posted @ 2019-10-20 14:55
bestAndBest
阅读(1688)
评论(0)
推荐(0)
摘要:
思想:以空间换时间,因为|data|<=n,故辅助数组长度为n+1,各元素初值为0,依次扫描链表中各节点,同时检查q[|data|]的值如果为0,则保留该节点,幷使数值为1,否则,删除该节点。 代码: 时间O(1),空间O(n) 阅读全文
posted @ 2019-10-20 14:42
bestAndBest
阅读(436)
评论(0)
推荐(0)
摘要:
基本思想:仿照快速排序思想,基于枢轴将n个整数划分处理。 若i=n/2,则分组完成,算法结束 若i<n/2,则枢轴前元素均属于a1,继续对i以后的元素进行划分 若i>n/2,则枢轴之后的元素均属于a2,继续对i以前的元素进行划分 阅读全文
posted @ 2019-10-20 14:27
bestAndBest
阅读(539)
评论(0)
推荐(0)

浙公网安备 33010602011771号