Pseudocode
First pass: count item occurrences for large 1-itemsets L1
for (k=2; Lk-1 != NULL; k++)
forall transactions t ? D
Lk = {c ? Ck | c.count >= minsup}
AprioriGen(L) /* Assume transactions in lexicographic order */
insert into Ck all p.item1, p.item2, …, p.itemk-1, q.itemk-1 from p, q ? L
where p.item1=q.item1, p.item2=q.item2, …, p.itemk-1 < q.itemk-1
/* prune itemsets s.t. some (k-1)-subset of c is ? L */
forall (k-1)-subsets s of c do