0% found this document useful (0 votes)
11 views12 pages

Lab 7

Uploaded by

chihungne
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views12 pages

Lab 7

Uploaded by

chihungne
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

BÀI THỰC HÀNH BUỔI 7

1. Cài đặt stack trên cơ sở tham chiếu và chạy lại các chương trình đã viết trong buổi 4 trên
stack này.
Bài 1 : Đổi số sang nhị phân :
2. package LQD.Lab7;
3.
4. import java.util.Scanner;
5. class Link<T> {
6. public T Data;
7. public Link<T> next;
8.
9. public Link(T d) {
10. Data = d;
11. }
12. }
13.
14. class LinkedList<T> {
15. private Link<T> first;
16. private int count;
17.
18. public LinkedList() {
19. first = null;
20. count = 0;
21. }
22.
23. public boolean isEmpty() {
24. return first == null;
25. }
26.
27. public void insert(T d) {
28. Link<T> newLink = new Link<T>(d);
29. newLink.next = first;
30. first = newLink;
31. count++;
32. }
33.
34. public T delete() {
35. T d = (T) first.Data;
36. first = first.next;
37. count--;
38. return d;
39. }
40.
41. public int nItems() {
42. return count;
43. }
44.
45. public T peek() {
46. return (T) first.Data;
47. }
48.
49. }
50.
51. class Stack<T> {
52. private LinkedList<T> list;
53.
54. public Stack() {
55. list = new LinkedList<T>();
56. }
57.
58. public void push(T d) {
59. list.insert(d);
60. }
61.
62. public T pop() {
63. return (T) list.delete();
64. }
65.
66. public boolean isEmpty() {
67. return list.isEmpty();
68. }
69.
70. public int nItems() {
71. return list.nItems();
72. }
73.
74. public T peek() {
75. return (T) list.peek();
76. }
77.
78. }
79. public class Nhiphan_StackLinkedList {
80. public static void main(String[] args) {
81. Scanner sc = new Scanner(System.in);
82. Stack<Integer> s = new Stack<Integer>();
83. int n, i;
84. System.out.print("Nhap n:");
85. n = sc.nextInt();
86. while (n > 0) {
87. i = n % 2;
88. s.push(i);
89. n = n / 2;
90. }
91. System.out.print("Dang nhi phan:");
92. while (!s.isEmpty()) {
93. System.out.print(s.pop());
94. }
95. System.out.println();
96. }
97.
98. }
99.
Bài 2 : Đảo ngược chuỗi
package LQD.Lab7_2;

import java.util.Scanner;
import java.util.StringTokenizer;

class Link<T> {
public T Data;
public Link<T> next;

public Link(T d) {
Data = d;
}
}

class LinkedList<T> {
private Link<T> first;
private int count;

public LinkedList() {
first = null;
count = 0;
}

public boolean isEmpty() {


return first == null;
}

public void insert(T d) {


Link<T> newLink = new Link<T>(d);
newLink.next = first;
first = newLink;
count++;
}

public T delete() {
T d = (T) first.Data;
first = first.next;
count--;
return d;
}

public int nItems() {


return count;
}

public T peek() {
return (T) first.Data;
}

class Stack<T> {
private LinkedList<T> list;

public Stack() {
list = new LinkedList<T>();
}

public void push(T d) {


list.insert(d);
}

public T pop() {
return (T) list.delete();
}

public boolean isEmpty() {


return list.isEmpty();
}

public int nItems() {


return list.nItems();
}
public T peek() {
return (T) list.peek();
}

public class DaoChuoi_StackLinkedList {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Stack<String> s = new Stack<String>();
System.out.print("Nhap chuoi: ");
String string = sc.nextLine();
StringTokenizer stk = new StringTokenizer(string, " ",
true);
while (stk.hasMoreTokens())
s.push(stk.nextToken());
System.out.print("Chu dao nguoc: ");
while (!s.isEmpty())
System.out.print(s.pop());
}

Bài 3 : Kiểm tra tính hợp lệ của dấu ngoặc :


package LQD.Lab7_3;

import java.util.Scanner;
class Link<T> {
public T Data;
public Link<T> next;

public Link(T d) {
Data = d;
}
}

class LinkedList<T> {
private Link<T> first;
private int count;

public LinkedList() {
first = null;
count = 0;
}
public boolean isEmpty() {
return first == null;
}

public void insert(T d) {


Link<T> newLink = new Link<T>(d);
newLink.next = first;
first = newLink;
count++;
}

public T delete() {
T d = (T) first.Data;
first = first.next;
count--;
return d;
}

public int nItems() {


return count;
}

public T peek() {
return (T) first.Data;
}

class Stack<T> {
private LinkedList<T> list;

public Stack() {
list = new LinkedList<T>();
}

public void push(T d) {


list.insert(d);
}

public T pop() {
return (T) list.delete();
}

public boolean isEmpty() {


return list.isEmpty();
}

public int nItems() {


return list.nItems();
}

public T peek() {
return (T) list.peek();
}

}
public class DauNgoac_StackLinkedList {
public static boolean kiemTra(String s) {
Stack<Character> s1 = new Stack<Character>();
Stack<Character> s2 = new Stack<Character>();
Stack<Character> s3 = new Stack<Character>();

for (char c : s.toCharArray()) {


switch (c) {
case '(':
s1.push(c);
break;
case ')':
if (s1.isEmpty()) {
return false;
}
s1.pop();
break;
case '[':
s2.push(c);
break;
case ']':
if (s2.isEmpty()) {
return false;
}
s2.pop();
break;
case '{':
s3.push(c);
break;
case '}':
if (s3.isEmpty()) {
return false;
}
s3.pop();
break;
}
}
return s1.isEmpty() && s2.isEmpty() && s3.isEmpty();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println(kiemTra(s));
}

100. Cài đặt hàng đợi trên cơ sở tham chiếu và chạy lại các chương trình đã viết trong
buổi 5 trên hang đợi này
101. package LQD.Lab7_4;
102.
103. import java.util.Random;
104. import java.util.Scanner;
105.
106. class Link<T> {
107. public T Data;
108. public Link<T> next;
109.
110. public Link(T d) {
111. Data = d;
112. }
113. }
114.
115. class LinkedList<T> {
116. private Link<T> first;
117. private Link<T> last;
118. private int count;
119.
120. public LinkedList() {
121. first = null;
122. last = null;
123. count = 0;
124. }
125.
126. public boolean isEmpty() {
127. return first == null;
128. }
129.
130. public void insert(T d) {
131. Link<T> newLink = new Link<T>(d);
132. if (last != null) {
133. last.next = newLink;
134. }
135. last = newLink;
136. if (first == null) {
137. first = newLink;
138. }
139. count++;
140. }
141.
142. public T delete() {
143. if (isEmpty()) return null;
144. T d = first.Data;
145. first = first.next;
146. if (first == null) {
147. last = null;
148. }
149. count--;
150. return d;
151. }
152.
153. public int nItems() {
154. return count;
155. }
156.
157. public T peek() {
158. return first != null ? first.Data : null;
159. }
160. }
161.
162. class Queue<T> {
163. private LinkedList<T> list;
164.
165. public Queue() {
166. list = new LinkedList<T>();
167. }
168.
169. public void push(T d) {
170. list.insert(d);
171. }
172.
173. public T pop() {
174. return list.delete();
175. }
176.
177. public boolean isEmpty() {
178. return list.isEmpty();
179. }
180.
181. public int nItems() {
182. return list.nItems();
183. }
184.
185. public T peek() {
186. return list.peek();
187. }
188. }
189. public class RadixSort_QueueLinkedList {
190. static int soCS(int n){
191. int d = 0;
192. while(n > 0){
193. d++;
194. n = n/10;
195. }
196. return d;
197. }
198. static void NgauNhien(int n, int[] a, int max){
199. Random rd = new Random();
200. for(int i = 0; i < n; i++)
201. a[i] = rd.nextInt(max);
202. }
203. static void Xuat(int[] a, int n){
204. for(int i = 0; i < n; i++){
205. System.out.printf(" "+a[i]);
206. if(i %10 == 9)
207. System.out.println();
208. }
209. }
210. static void radixSort(int[] a, int n){
211. int i, k, m, lt, x;
212. Queue<Integer>[] q1, q2, s, d, t;
213. q1 = new Queue[10];
214. q2 = new Queue[10];
215. for (i = 0; i < 10; i++){
216. q1[i] = new Queue<Integer>();
217. q2[i] = new Queue<Integer>();
218. }
219. k = a[0];
220. for (i = 0; i < n; i++){
221. if (k < a[i]) k = a[i];
222. q1[a[i] % 10].push(a[i]);
223. }
224. lt = 1;
225. k = soCS(k);
226. s = q1;
227. d = q2;
228. for (m = 1; m < k; m++){
229. lt = lt *10;
230. for (i = 0; i < 10; i++)
231. while(!s[i].isEmpty()){
232. x = s[i].pop();
233. d[x/lt%10].push(x);
234. }
235. t = s;
236. s = d;
237. d = t;
238. }
239. n = 0;
240. for(i = 0; i < 10; i++){
241. while(!s[i].isEmpty())
242. a[n++] = s[i].pop();
243. }
244.
245. }
246. public static void main(String[] args) {
247. int[] a;
248. Scanner sc = new Scanner(System.in);
249. System.out.print("Nhap n va max: ");
250. int n = sc.nextInt();
251. int max = sc.nextInt();
252. a = new int[n];
253. NgauNhien(n, a, max);
254. System.out.println("Day so ban dau:");
255. Xuat(a, n);
256. System.out.println();
257. radixSort(a, n);
258. System.out.println("Day so da sap xep:");
259. Xuat(a, n);
260. }
261.
262. }
263.

264. Cài đặt danh sách liên kết đôi, sử dụng để tổ chức số nguyên lớn (bao nhiêu chữ
số cũng được) và tính 1000!

You might also like