主题:算法题:找死锁
数据库操作经常用到事务,一个表(TB1)在某事务(TA1)中被写操作后,在该事务(TA1)未提交或回滚前,该表(TB1)为被锁状态,其它事务(TA2)如果试图操作被锁定的表(TB1),则只能等原事务(TA1)提交或回滚表(TB1)解锁后才能继续,否则TA2一直等待。如果事务间产生相互等待现象,即称为死锁。
现在输入各个事务的情况,要求查出是否存在死锁的可能。
输入:每行代表一个事务,每行中输入若干个有写操作的表名(大小写敏感),表名之间用一个空格隔开,同一行不会出现表名重复。共输入若干行,有若干个事务。
输出:如果没有死锁的可能输出“OK”,否则输出导致产生死锁的事务,并用中括号标出导致死锁的表。
如,输入:
A B C
D E C
B D
D E A
E F
F E
输出:
D E [A]
F [E]
输入:
A B C
D E C
B D E
输出:
OK
现在输入各个事务的情况,要求查出是否存在死锁的可能。
输入:每行代表一个事务,每行中输入若干个有写操作的表名(大小写敏感),表名之间用一个空格隔开,同一行不会出现表名重复。共输入若干行,有若干个事务。
输出:如果没有死锁的可能输出“OK”,否则输出导致产生死锁的事务,并用中括号标出导致死锁的表。
如,输入:
A B C
D E C
B D
D E A
E F
F E
输出:
D E [A]
F [E]
输入:
A B C
D E C
B D E
输出:
OK