Daily Diaries Of CTK

.

Hãy chọn cho mình một con đường để đi

Nếu bạn không có con đường nào để đi thì cũng không có thành công nào chọn bạn

Hãy để mỗi ngày trôi qua là một ngày ý nghĩa

Luôn cố gắng hết mình vì những ước mơ.

Hãy để ngày hôm nay tốt hơn ngày hôm qua

Bạn sinh ra để làm nên những việc lớn lao.

Hãy tin vào chính bản thân của mình.

Để thực hiện được mơ ước thì bạn phải biết khát khao.

Luôn biết đứng lên sau mỗi lần vấp ngã.

Hạnh phúc không phải là kết quả, đó là quá trình bạn đi tới thành công.

Thứ Bảy, 27 tháng 2, 2016

Quick Sort

Sắp xếp nhanh(Quicksort), còn được gọi là sắp xếp kiểu phân chia (part sort) là một thuật toán sắp xếp phát triển bởiC.A.R. Hoarec sắp thành hai danh sách con. Khác với sắp xếp trộn, chia danh sách cần sắp xếp a[1...n] thành hai danh sách con có kích thước tương đối bằng nhau nhờ chỉ số đứng giữa danh sách, sắp xếp nhanh chia nó thành hai danh sách bằng cách so sánh từng phần tử của danh sách với một phần tử được chọn được gọi là phần tử chốt. Những phần tử nhỏ hơn hoặc bằng phần tử chốt được đưa về phía trước và nằm trong danh sách con thứ nhất, các phần tử lớn hơn chốt được đưa về phía sau và thuộc danh sách đứng sau. Cứ tiếp tục chia như vậy tới khi các danh sách con đều có độ dài bằng 1.

Cần lắm

Đôi khi những điều nhỏ nhoi cũng đủ để bạn xao xuyến nhớ nhưng một người nào đó!
 Đã có bao giờ, trong một ngày cuối năm, khi gió mùa về trên miền Bắc, buổi tối, bạn nằm cuộn mình kín mít trong chăn, hai mắt nhắm lại và lim dim lim dim, đầu óc cứ thả trôi đi với những suy nghĩ vẩn vơ nào đó…
Đã có bao giờ bạn ngồi một mình nơi bãi biển vào một buổi chiều nghe gió biển lành lạnh lướt qua. Bạn sẽ cười, khi lâu đài cát mà mình vừa xây không bị nước biển tràn vào làm đổ… Nhưng, rồi một cơn sóng lớn đổ vào, lâu đài cát của bạn vụn vỡ nát rời, và bạn nhìn những lợn cát hòa vào trong nước, thấy man mác buồn. Một cảm giác mất mát chảy trôi trong bạn. Chẳng biết làm gì, bạn ngồi lặng yên, vốc từng nắm cát ướt và thả cát trôi từ từ qua những kẽ tay…
Đã có bao giờ bạn chạy ngoài đường vào một buổi chiều thật buồn. Bạn chẳng biết đi đâu, và cứ thế mà lang thang. Bất chợt mưa, bạn chẳng vội vàng gì mà tìm chỗ tránh, rồi bạn đưa tay ra hứng những giọt mưa rơi xuống tay mình… Hôm đó bạn dầm mưa về nhà, tối lại hâm hấp sốt mà vẫn thấy vui… 

Đã có bao giờ trên những chuyến đi xa, vào buổi chiều khi hoàng hôn buông xuống, mây tím mây hồng giăng giăng ngang trời, còn mặt trời thì đỏ ửng, bạn thấy lòng mình chùng lại trước cái đẹp đang rơi xuống những lưng đồi…
Đã có bao giờ bạn ngồi một mình trong một quán café thật vắng, tay cầm một cuốn sách, bên tai vang vang một bản nhạc nhè nhẹ, thỉnh thoảng lại thả hồn đi đâu đâu…
Đã có bao giờ bạn dậy thật sớm vào Chủ Nhật, dọn dẹp nhà cửa, trải tấm khăn bàn mới, rồi gọi điện cho vài người bạn, rủ họ đến nhà chơi. Hôm đó, bạn đã có một ngày thật vui, thật hạnh phúc…
Đã có bao giờ bạn đến một nơi nào đó như Đà Lạt…
tối, bạn khoác vào mình chiếc áo ấm cho đỡ lạnh rồi bắt đầu thả bộ dọc theo những con dốc dài. Hai tay bạn nhét vào túi áo (vì lạnh), rồi bước những bước chầm chậm, có khi lại ngẩng đầu lên nhìn trời…
 Đã có bao giờ, vào những hôm có việc phải dậy thật sớm, bạn chạy xe ngoài đường… Khi ngửa mặt nhìn lên trời bạn thấy bầu trời là những mảng màu nhợt nhạt lẫn lộn và vằn vện, không dưng bạn mường tượng đến những ký ức tưởng đã quên mất từ lâu…
Đã có khi nào, vào những buổi chiều sau một cơn mưa rào, bạn chạy xe một mình giữa những mọi người trên những con đường còn đọng nước, lòng chợt se lại vì nhớ đến một người…



Thất tình tổn hại tới cơ thể hơn bạn tưởng tượng



      Theo nghiên cứu đăng trên tờ Psychological Science ,điều đầu tiên xảy ra ngay sau khi thất tình đó chính là nhịp tim giảm. Sau những ảnh hưởng nhẹ nhàng đó thì cảm giác tiêu cực sẽ xuất hiện những câu hỏi tiêu cực sẽ xuất hiện dẫn tới bạn bị stress. Điều này sẽ tồi tệ hơn khi nồng độ hormone thay đổi, nhất là việc nhiều lên của cortisol gây ra nguy cơ viêm nhiễm của cơ thể.



Còn theo nghiên cứu đăng trên tờ New England Journal of Medicine, khi trái tim "tan vỡ" cũng ảnh hưởng rất lớn tới tim làm tăng nguy cơ mắc các bệnh về tim mạch. Không chỉ tâm trạng mà giấc ngủ và hệ tiêu hóa cũng bị ảnh hưởng nghiêm trọng do việc thức đêm và ăn ngủ thất thường.
Khi con tim bị tổn thương ý trí cũng mất đi sự tỉnh táo, bạn sẽ thấy có những cơn đau ở vùn não do sự mất mát vầ tình cảm. Tư duy và những quyết định của bạn trong thời điểm đó cũng sẽ không còn sáng suốt nữa. Một thời gian sau bạn sẽ thấy tóc mình rụng nhiều hơn bình thường.


18 SỰ THẬT GIÚP BẠN TRỞ LÊN MẠNH MẼ HƠN.

18 SỰ THẬT GIÚP BẠN TRỞ LÊN MẠNH MẼ HƠN.

1. Không quan trọng bạn phạm bao nhiêu sai lầm, không quan trọng bạn bước đi chậm chạp đến đâu, bạn vẫn chiến thắng những kẻ không bao giờ biết đến 2 từ "cố gắng".
2. Nếu bạn muốn có được những điều chưa bao giờ có, thì hãy làm những điều bạn chưa bao giờ làm.
3. Đừng bao giờ hối tiếc những gì đã xảy ra trong quá khứ, vì thời điểm ấy, đó chính xác là những gì bạn muốn.
4. Lo lắng chính là điều vô bổ nhất trên đời. Nó giống như việc bạn cầm một chiếc ô và chạy vòng vòng đợi trời mưa xuống.
5. "Đừng nhầm lẫn tính cách tôi và thái độ tôi. Tính cách của tôi nói lên con người tôi, còn thái độ của tôi tùy thuộc vào con người bạn".
6. Thành công không phải là đích đến cuối cùng, thất bại cũng chẳng phải vực sâu thăm thẳm, đó chỉ là động lực để bạn vững vàng hơn trên con đường sắp bước.
7. Sự khác biệt duy nhất giữa một ngày tốt đẹp và một ngày tồi tệ nằm ở chính thái độ của bạn.
8. Khi cuộc sống dồn bạn vào bước đường cùng, đừng hỏi: tại sao là tôi? Mà hãy nói rằng: cứ thử tôi đi!
9. Đừng bao giờ giao bí mật của bạn cho một ai, bởi vì, tự bạn còn không giữ được thì còn trông mong vào ai kia chứ?

10. Giống như hoa dại, hãy học cách sinh tồn trong mọi hoàn cảnh khắc nghiệt nhất, ngay cả khi người đời cho rằng bạn không thể.
11. Khi bạn muốn tìm một người thay đổi được cuộc đời bạn, hãy nhìn vào gương.
12. Hãy mạnh mẽ lên đi, mọi thứ rồi sẽ ổn thôi. Bầu trời có thể bão bùng, nhưng mưa không thể rơi mãi được đâu.
13. Nếu người khác tôn trọng bạn, hãy tôn trọng họ. Nếu họ không tôn trọng bạn, vẫn cứ tôn trọng họ, đừng để hành động của người khác ảnh hưởng đến nhân cách tốt đẹp của bạn. Bởi lẽ, bạn chính là bạn chứ không phải là một ai khác.
14. Đại dương mênh mông sẽ không thể đánh chìm một con tàu nếu nước không tràn vào bên trong nó. Cũng tương tự như thế, những khó khăn sẽ không thể quật ngã bạn nếu bạn không cho phép chúng làm thế.
15. Cuộc đời chỉ có một, vì thế hãy làm những gì khiến bạn hạnh phúc và ở bên người khiến bạn luôn mỉm cười.
16. Nếu như bạn mong đợi người đời sẽ tử tế với bạn chỉ vì bạn tử tế với họ, thì cũng giống như việc bạn trông chờ một con sư tử không ăn thịt mình chỉ vì mình không ăn thịt nó. Cuộc sống vốn dĩ không công bằng, hãy học cách thích ứng đi.
17. Nếu kẻ khác nói xấu bạn, phán xét bạn mặc dù không biết gì về bạn. Đừng buồn, hãy nhớ kĩ một điều: "Chó sủa khi gặp người lạ"
18. Đôi khi, không phải là một người đã thay đổi, chỉ là mặt nạ của họ đã rơi xuống mà thôi.

Thứ Sáu, 26 tháng 2, 2016

Em thua rồi nhé

"Anh kia! Bỏ ra đau quá!"
Mặt nó nhăn nhó trố mắt nhìn anh. Anh quay sang nó nở nụ cười ấm áp:
"Gì thế cô bé?", anh nhẹ nhàng hỏi nó. Mặt nó nhăn nhó nhìn xuống bàn chân, mếu máo: "Cái chân của tôi, anh đạp lên đau quá!". Nó nguýt anh một cái rõ sắc nét rồi giậm giậm bàn chân nũng nịu. Anh lúng túng nhìn xuống bàn chân mình rồi ấp úng xin lỗi nó tíu tít:
"Xin... xin... lỗi bé ; anh vô ý quá! ". Không nói không rằng nó cong cớn quay lên không quên nguýt anh một cái rõ sắc: "Người gì vô duyên quá!"
Thế là ngày nào cũng vậy, hễ tới lớp anh văn là nó ngồi trên, anh ngồi dưới, không ai nói chuyện với ai câu nào...
***


Ngoài trời lất phất mưa phùn, những hạt mưa đầu mùa ấm áp lạ thường đan xen cái lành lạnh của tiết trời đang giao mùa khiến tim nó chợt man mác buồn, nó cũng không hiểu nỗi buồn đang len lỏi trong tâm hồn nó là gì nữa... Nó đứng trú mưa ngoài mái hiên trung tâm Anh Ngữ. Anh tiến đến gần và đứng cạnh nó, giọng trầm ấm: " Cô bé có mang ô không ?". Nó không trả lời, lấy tay nghịch nghịch những hạt mưa. Trông nó có vẻ thích thú lắm! Mưa vẫn cứ dai dẳng không dứt, mưa phùn thôi mà!. Nhưng cũng đủ để ướt đẫm áo nó và cả áo anh nữa!...
Một phút trôi qua, hai phút trôi qua... Thời gian vẫn cứ tiếp tục trôi đi như thoi đưa và không dừng lại, cũng giống như những hạt mưa đáng ghét ngoài kia khiến nó không thể về nhà được và khiến nó cứ dặm chân tại chỗ ở lại đây! Với một người mà nó ghét!...
Tạnh mưa rồi! Nó quay sang anh nháy mắt tinh nghịch: "Tui có mang dù, chứ không mang ô của ông!". Rồi nó phá lên cười, giọng cười giòn tan trong trẻo lan tỏa cả đất trời... Anh sánh bước cùng nó. Giọng nói ấm áp, cùng nụ cười nở trên môi thân thiện:" Vậy là mình huề nhé bé!" Nó cười toe toét không nói gì, anh cũng cười. Thế là anh và nó quen nhau từ đó!...
"Bé ơi! Nhanh lên em!" Giọng anh trầm ấm gọi nó í ới. Nó một tay mở cửa sổ, một tay che miệng vẫn còn đang ngáy ngủ. Giọng nó cau có không kém phần lanh lảnh vốn có của nó, hỏi anh : " Hôm nay là ngày gì mà anh tới nhà em sớm thế ? " Anh mỉm cười nháy mắt đầy bí ẩn : " Em chuẩn bị đi! Anh dẫn em tới chỗ này!"...
Mắt nó tròn xoe nhìn cảnh vật hiện ra trước mắt nó. Khung cảnh tuyệt đẹp mà nó cứ nghĩ là chỉ trong mơ nó mới nghĩ tới thôi! Hoa hồng trải dài trên con đường phía trước mặt nó, rượu vang cùng với nến và cả tiếng đàn vi ô long du dương êm ái, trầm buồn. Tiếng đàn như đưa nó vào một khung trời tình yêu và tuyệt đẹp mà nó chỉ hằng ao ước trong mơ với những câu chuyện cổ tích thật đẹp mà mẹ nó hay kể. Nó luôn ao ước được như cô công chúa ngủ trong rừng sau một giấc ngủ dài và được hoàng tử đến cứu vậy!...
Anh nắm tay nó kéo đi. Tự nhiên nó thấy tim mình đập mạnh, len lỏi trong tâm hồn nó một thứ cảm giác rất lạ mà nó không biết phải diễn tả như thế nào hết. Tình yêu của nó và anh nảy nở trong sáng lắm! Trong sáng như viên pha lê trong mắt nó vậy! Quen nhau hai năm, nhưng đây là lần đầu tiên tay anh chạm tay nó, cái va chạm đầu đời với một người đàn ông khác phái khiến nó lúng túng, ấp úng, giọng nó lắp bắp:" A aa...Anh...Anhmuốn dẫn em đi đâu ?". Nhìn điệu bộ ngượng nghịu, lúng túng của nó nhìn mà phát tội, mắc cười lắm!... Không nhịn được cười, anh phá lên một tràn cười giòn tan, nghiêng ngả. Nó quê vì anh cười nó, chắc anh nghĩ nó ngố quá! Nó vừa quê vừa giận bỏ chạy, anh nắm lấy tay nó ghì chặt vào lòng mình. Nó khóc nức nở như một đứa trẻ... Anh hôn lên trán nó, đôi mắt đang ướt đẫm lệ của nó, cái mũi xinh của nó, rồi nhẹ nhàng hôn lên đôi môi chín mọng của nó. Toàn thân nó run lên vì hạnh phúc. Nó đón nhận nụ hôn đầu đời với tất cả niềm yêu thương. Hơi thở của anh phả vào mặt nó gấp gáp, nóng bỏng quá! Khiến toàn thân nó run lên, máu chạy rần rật khắp châu thân... Nụ hôn đầu đời của nó ngọt ngào thế đấy!....
Bỗng một nói trầm ấm quen thuộc ghé sát vào tai làm cắt đứt dòng suy nghĩ của nó: "Em thua rồi nhé,cô bé!". Anh mỉm cười ấm áp. Nó nép vào lòng anh không nói gì chỉ mỉm cười hạnh phúc. Nó thấy mình thật nhỏ bé và cần được anh che chở. Nụ cười của nó và anh lan tỏa yêu thương hạnh phúc!...
Nó chợt nhớ lại hôm ngày mưa ấm áp, cái cơn mưa mà nó tưởng chừng như rất ghét vì cơn mưa làm nó không thể về nhà sớm với mẹ được, mưa cũng làm ướt cả áo nó. Vì vậy nó ghét mưa lăm! Nhưng nó cũng thầm cảm cơn mưa đã khiến nó và anh gần nhau hơn....
Giọng nó cong cớn đầy thách thức:" Đố anh lấy đi được nụ cười và những giọt nước mắt của tui!"...Anh ghé sát vào tai nó thì thầm: " Em thua rồi nhé, cô bé! " Anh mỉm cười hạnh phúc. Nó cảm thấy hạnh phúc và thầm cảm ơn cơn mưa phùn đáng ghét ấy! Nó chợt thấy yêu sao cơn mưa và thầm cảm ơn vì mưa đã mang anh đến bên nó.




Tỉ phú Bill Gates và cuộc hôn nhân vô giá

Đối với Bill Gates thì vợ của ông - Melinda Gates là một người có vị trí mà không ai có thể thay thế được trong cuộc đời và trái tim ông.

Bill Gates có họ tên đầy đủ là William Henry "Bill" Gates. Ông sinh ngày 28 tháng 10 năm 1955, tại Mỹ. Thế giới biết tới ông như một doanh nhân cực kì thành đạt, một nhà từ thiện, một tác giả và đồng thời là người sáng lập nên tập đoàn công nghệ Microsoft. Kể từ năm 1995 tới đây, ông luôn có mặt trong danh sách những người giàu có nhất trên thế giới.
Ban đầu, Bill Gates nổi tiếng với tài năng sáng giá song đáng ghét, tiếp đến là nhà lãnh đạo xuất chúng nhưng hay cáu, rồi tới “cái gai trong mắt” Bộ Tư pháp Mỹ. Sau tất cả, ông trở thành nhà hảo tâm chuyên giúp đỡ trẻ em trên thế giới khỏi bại liệt, sốt rét hay nghèo đói, thiếu giáo dục. Và bà Melinda – vợ của Bill Gates, chính là người quan trọng đã giúp vị tỷ phú này thay đổi thành một con người hoàn hảo như hiện nay.

Nhiều người đã nói, nhờ có Melinda mà Bill Gates mới bắt đầu hăng hái làm việc từ thiện như thế. Bà đã giúp ông trở thành một người cởi mở hơn, kiên nhẫn hơn, giàu lòng trắc ẩn hơn rất nhiều so với một Bill Gates sống quá thiên về lý trí như trước.















Cuộc gặp gỡ định mệnh và cái kết có hậu
Melinda French sinh ra và lớn lên tại Dallas, Texas, Mỹ. Mùa hè năm 1986, sau khi tốt nghiệp Đại học Duke với tấm bằng kinh tế học và công nghệ máy tính, cô bắt đầu làm thực tập sinh ở Hãng IBM.
Năm 1987, Melinda bắt đầu làm việc phụ trách quảng bá phần mềm văn bản tại Microsoft. Trong 10 người có bằng MBA, cô là người nữ duy nhất và trẻ nhất. Sau khi vào công ty được 4 tháng, Melinda đến New York tham dự một triển lãm công nghệ và có dịp ngồi cạnh Bill Gates trong một buổi tiệc.
Mùa thu cùng năm đó, vào một ngày cuối tuần, Bill và Melinda gặp lại nhau tại nhà để xe của công ty. Họ nói chuyện một lúc, Bill nhìn đồng hồ và hỏi: “Em có đồng ý hẹn hò với tôi trong vòng hai tuần bắt đầu từ thứ 6 tuần sau không?".
Melinda trả lời: “Từ thứ 6 tuần sau bắt đầu hẹn hò hai tuần? Em thấy không được tự nhiên lắm! Không biết được, đến lúc đó hãy gọi cho em”. Sau đó, Bill gọi lại báo cho Melinda lịch hoạt động ngày hôm đó, Melinda nhận lời hẹn gặp ông vào buổi tối thứ 6 định mệnh.
7 năm sau đó, hai người kết hôn trong một lễ cưới được bí mật tổ chức trên đảo Lanai vào ngày 1/1/1994. Tính đến thời điểm này, đôi vợ chồng đáng ngưỡng mộ này đã có với nhau 3 người con. Họ luôn sát cánh cùng nhau trong các hoạt động tích cực của Quỹ Bill & Melinda Gates, từ việc đầu tư cho các dự án y tế nhằm xóa bỏ dịch bệnh cho đến phát triển nguồn lương thực cho người nghèo trên khắp thế giới.

3 thuật toán sắp xếp InsertSort, selectSort, bublleSort

======================================================================
Name        : sort.cpp
Author      : CTK
Version     :
Copyright   : Your copyright notice
Description : Hello World in C++, Ansi-style
=======================================================================

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
using namespace std;
// thuat toan insertSort
void insertSort(int A[], int n) { // khai bao ham insertSort
for (int i = 0; i < n; i++) { //cho bien i lam bien chay
int j = i - 1; // gan gia tri i cho j-1, j la bien lui ve
int tmp = A[i]; // gan gia tri i cho tmp
while (tmp < A[j] && j >= 0) {
A[j + 1] = A[j];
j--;
}
A[j + 1] = tmp;
}
}
// doi cho
void swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}
//thuat toan selectSort
void selectSort(int A[], int n) {
for (int i = 0; i < n - 1; i++) {
int count = i;
for (int j = i + 1; j < n; j++) {
if (A[count] > A[j]) {
swap(A[count], A[j]);
}

}
if (i != count) {
swap(A[count], A[i]);
}
}
}
// thuat toan sap xep bubble sort
void bubbleSort(int A[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (A[i] > A[j])
swap(A[i], A[j]);
}
}
}
int findMax(int A[], int n) {
int max = A[0], i;
for (int i = 0; i < n; i++) {
if (A[i] > max) {
max = A[i];
}
}
return max;
}
int findMin(int A[], int n) {
int min = A[0], i;
for (int i = 0; i < n; i++) {
if (A[i] < min) {
min = A[i];
}
}
return min;
}

// tinh gia tri trung binh trong mang
float trungBinh(int A[], int n) {
float s = 0;
float avg = 0;
for (int i = 0; i < n; i++) {
s += A[i];
}
avg = (float) (s / n);
return avg;
}

// tim do lech giua hai gia tri trong mang
void chenhLech(int A[], int n) {
int i, j;
cout << "nhap phan tu thu nhat:";
cin >> i;
cout << "nhap phan tu thu hai:";
cin >> j;
cout<<"do chenh lech giua hai phan tu la:";
if(A[i-1]>=A[j-1])cout<<(A[i-1]-A[j-1]);
else cout<<(A[j-1]-A[i-1]);
}
void check(int A[], int n){
for(int i=0; i<n;i++){
cout<<"do lech trung binh so thu "<<i+1<<" la: ";
if((float)A[i]>=trungBinh(A,n)) cout<<((float)A[i]-trungBinh(A,n));
else cout<<(trungBinh(A,n)-(float)A[i]);
cout<<endl;
}
}
// tim kiem mot phan tu trong mang
void search(int A[], int n, int x){
for(int i=0; i<n; i++){
if(A[i]==x) cout<<i<<"\t";
}
}
int main() {
int n;
int A[10];
cout << "nhap gia tri n:";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "so thu " << i + 1 << " la: ";
cin >> A[i];
}
// 3 thuat toan sap xep
insertSort(A, n);
//selectSort(A,n);
//bubbleSort(A, n);

// phan tu lon nhat va vi tri
for (int i = 0; i < n; i++)
cout << "\t" << A[i];
cout << "gia tri lon nhat la: ";
cout << findMax(A, n);
cout << endl << "vi tri phan tu lon nhat trong mang la: ";
for (int i = 0; i < n; i++) {
if (A[i] == findMax(A, n))
cout << i;
}
// phan tu nho nhat va vi tri
cout << endl << "gia tri nho nhat la: ";
cout << findMin(A, n);
cout << endl << "vi tri phan tu nho nhat trong mang la: ";
for (int i = 0; i < n; i++) {
if (A[i] == findMin(A, n))
cout << i;
}
// gia tri trung binh
cout << endl << "gia tri trung binh cac phan tu trong mang la:";
cout << trungBinh(A, n);
cout<<endl;
//chenhLech(A,n);
check(A,n);
cout<<"nhap so ban can tim";
int k;
cin>>k;
cout<<"vi tri ban can tim la :";
search(A,n,k);
}

Thứ Năm, 25 tháng 2, 2016

Code Danh Sách Liên Kết

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * File:   main.cpp
 * Author: KHOA
 *
 * Created on August 26, 2016, 9:10 AM
 */

#include <iostream>
#include<stdio.h>
using namespace std;

struct Node {
    int data;
    Node *next; // chua dia chi node ke tiep ma no tro toi
};

struct List {
    Node *head; // phan tu dau danh sach
    Node *tail; // phan tu cuoi danh sach
};

// khoi tao

void Init(List &l) {
    l.head = l.tail = NULL; // gan cac phan tu dau va cuoi deu bang NULL
}

// khoi tao Node

Node *creatNode(int x) {
    Node *p = new Node;
    if (p == NULL) return NULL;
    else {
        p->data = x; // gan gia tri data cua p bang x
        p->next = NULL; // phan tu ke tiep bang NULL
    }
    return p; // tra ve phan tu p
}

// kiem tra danh sach rong

bool isEmpty(List &l) {
    // neu phan tu dau danh sach la NULL thi danh sach rong
    if (l.head == NULL) return true;
        // con khong thi danh sach khong trong
    else return false;
}

// chen vao dau danh sach;

void addHead(List &l, int x) {
    Node *p = creatNode(x); // khoi tao Node p co gia tri bang phan tu x
    if (isEmpty(l)) { // kiem tra xem danh sach co rong khong
        l.head = l.tail = p; // neu rong thi chen luon phan tu p vao danh sach
    } else { // neu khong thi
        p->next = l.head; // gan phan tu ke tiep cua p la phan tu dau
        l.head = p; // cap nhat lai phan tu dau
    }
}

// them vao cuoi danh sach

void addTail(List &l, int x) {
    // neu danh sach rong thi giong nhu la chen vao dau
    Node *p = creatNode(x);
    if (isEmpty(l)) l.head = l.tail = p;
    else {
        l.tail->next = p; //ta se gan phan tu cuoi ke tiep la phan tu p
        l.tail = p; //cap nhat lai phan tu cuoi la p
    }
}

// tim kiem tren danh sach

Node *search_Node(List &l, int k) {
    Node *p = l.head; // gan phan tu p la phan tu dau danh sach
    while (p != NULL) { // neu p khac NULL thi tim
        if (p->data == k) return p; // khi tim ra thi se tra ve phan tu p
        else p = p->next; // chua tim ra thi tiep tuc tim
    }
    return NULL; // khong tim thay phan tu doi trong danh sach
}

// chen vao giua cua danh sach
// chen phan tu x dang sau phan tu k

void addMid_value(List &l, int x, int k) {
    Node *p = search_Node(l, k); // gan phan tu k vao Node p can xet
    if (p != NULL) { // neu tim duoc gia tri cua k trong danh sach thi ta lam nhu sau
        Node *q = p->next;// giả sử phần tử kế tiếp của p la q
        Node *r = creatNode(x);// tạo ra phần tử r chứa giá trị của x cần chèn vào
        r->next = q; // gán phần tử kế tiếp của r là phần tử q
        p->next = r; // gán phần tử kế tiếp của p là q
    }
    // neu khong tim duoc gia tri k trong danh sach thi dua ra thong bao
    else cout << "\nKhong tim thay node co data = " << k;
}

// dem so phan tu co trong danh sach lien ket

int count_Node(List &l) {
    int dem = 0;
    for (Node *p = l.head; p != NULL; p = p->next) {
        dem++; // tang bien dem len khi p->next
    }
    return dem; // tra về giá trị của biến đếm
}
// chen phan tu x vao mot vi tri bat ky trong danh sach lien ket

void addMid_index(List &l, int x, int k) {
    // nếu giá trị nhập vào <=1 thì chèn vào đầu danh sách
    if (k <= 1 || isEmpty(l)) addHead(l, x);

    // Nếu giá trị nhập vào lớn hơn tổng số phần tử thì chèn vào cuối danh sách
    else if (k >= count_Node(l)) addTail(l, x);

    // Nếu không thì
    else {
        int dem = 2;
        Node *p = creatNode(x);
        // for(Node *r = l.head; r!=NULL; r=r->next){

        Node *r = l.head;
        while (r != NULL) {
            if (dem == k) {
                // bước này thực hiện như chèn phần tử vào danh sách
                Node *q = r->next;
                p->next = q;
                r->next = p;
                // Hoặc cách 2 của phần này là code 1dòng dưới
                //addMid_value(l,x,dem-1);
                break;
            } else dem++;
            r = r->next;// nếu chưa tìm ra vị trí cần chèn thì tăng r trong danh sách
        }
    }

    // Hoặc cách 2 là phần command dưới
    /*if(isEmpty(l) || k<= 1 ) addHead(l,x);
        else if(k>= n) addTail(l,x);
        else{
                Node *p = creatNode(x);
                Node *q = new Node, *w = new Node;
                Node *r = l.head;
                int dem = 0;
                while(r!=NULL){
                        dem++;
                        q = r;
                        if(dem == k ) break;
                        else r = r->next;
                }
                w = l.head;
                while(w->next!= q) w = w->next;
                w->next = p;
                p->next = r;
        }*/

}

// xoa mot phan tu cua danh sach lien ket
// xoa phan tu dau tien

void delHead(List &l) {
    Node *p = l.head;
    if (p != NULL) {
        l.head = l.head->next; // gan phan tu dau tien thanh phan tu ke tiep
    }
    delete p; // xoa phan tu dau tien
}

// xoa Node cuoi cung trong danh sach lien ket don

void delTail(List &l) {
    // can tim ra phan tu cuoi cung
    Node *p = l.head;
    while (p->next != l.tail) p = p->next; // tiep tuc tim neu phan tu do chua la phan tu cuoi cung
    // da tim ra phan tu p la phan tu truoc phan tu cuoi cung
    Node *q = p->next; // luc nay q la Node cuoi cung cua danh sach
    l.tail = p; // sai o cho nay
    p->next = NULL;
    delete q;
}

// xoa tai mot vi tri bat ky co trong danh sach

void delNode_index(List &l, int k) {
    // xoa Node tai vi tri k trong danh sach lien ket
    Node *p = l.head;
    Node *q = search_Node(l, k); // tim kiem vi tri cua Node can xoa
    while (p->next != q) {
        p = p->next;
    }
    // da tim ra vi tri cua Node truoc Node can xoa
    Node *r = q->next; // r la Node sau Node can xoa
    p->next = r; // gán phần tử r cho phần tử kế tiếp của p
    delete q; // xóa phần tử q
}

// xóa phần tử có giá trị x trong danh sách
void delNode_value(List &l, int x){
    Node *q = search_Node(l,x);
    if(q!=NULL){
        Node *p = l.head;
        while(p->next!=q){
            p=p->next;
        }
        // tim ra vi tri cua p truoc phan tu can xoa
        Node *r = q->next;
        p->next = r;
        delete q;
    }
    else{
        cout<<"Khong ton tai phan tu "<<x<<" trong danh sach lien ket";
    }
}


// nhap phan tu cho danh sach lien ket
void nhap(List &l) {
    int n;
    Init(l); // khởi tạo danh sách
    cout << "Nhap so phan tu cho danh sach lien ket: ";
    cin>>n;
    for (int i = 1; i <= n; i++) addTail(l, i); // chèn vào cuối danh sách
}

// Ham xuat cac phan tu

void xuat(List &l) {
    for (Node *p = l.head; p != NULL; p = p->next) {
        cout << p->data << " ";
    }
}

int main() {
    List l;
    Init(l);
    nhap(l);
    xuat(l);
    int k, x, lc;
    do {
        cout << "\n______MENU______\n1_Chen dau.\n2_chen cuoi."
                << "\n3_Chen sau vi tri node data = k.\n4_Chen vao vi tri bat ki."
                << "\n5_Xuat Thong tin List.\n6_Xoa phan tu dau List."
                << "\n7_Xoa phan tu o cuoi List.\n8_Xoa node o vi tri k."
                <<"\n9_Xoa phan tu co gia tri = k trong danh sach."
                << "\n0_Thoat.\n_Ban chon ? ";
        cin>> lc;
        switch (lc) {
            case 0: break;
            case 1: cout << "\nNhap x: ";
                cin>> x;
                addHead(l, x);
                break;
            case 2: cout << "\nNhap x: ";
                cin>> x;
                addTail(l, x);
                break;
            case 3: cout << "\nNhap x, k: ";
                cin >> x >> k;
                addMid_value(l, x, k);
                break;
            case 4: cout << "\nNhap x, vi tri k: ";
                cin >> x >> k;
                addMid_index(l, x, k);
                break;
                //case 5: xuat(l); break;
            case 6: delHead(l);
                break;
            case 7: delTail(l);
                break;
            case 8: cout << "\nNhap vi tri k: ";
                cin>> k;
                delNode_index(l, k);
                break;
            case 9: cout<<"\nNhap phan tu can xoa:";
            cin>>k;
            delNode_value(l,k);
            break;
        }
        xuat(l);
    } while (lc != 0);
    return 0;
}


Code Tháp Hà Nội

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
void move(char A,char B,char C,int n);
int main()
{
int n;
char A,B,C;
cout<<"Nhap so tang thap: "; cin>>n;
move('A','B','C',n); // truyen vao ky tu la 'A' khong phai la A nhu cua m
return 0;
}
void move(char A,char B,char C,int n) // hoac la thay A,B,C bang cac so 1,2,3
{
if(n==1)
cout<<A<<"---->"<<B<<"\n";
else
{ /*move(A,C,B,n-1);
move(A,B,C,1);
move(B,A,C,n-1);*/
// code tren cua m sai
move(A,C,B,n-1);// chuyen n-1 dia tu A sang B va dung cot C la trung gian
move(A,B,C,1);// chuyen 1 dia con lai tu A sang C dung cot B lam cot trung gian
move(C,B,A,n-1); // chuyen n-1 dia tu cot B vao dia C dung dia A lam trung gian*/
}
}

Code QuickSort



#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<malloc.h>
using namespace std;
// hoan doi vi tri giua hai phan tu
void swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}

// ham tim phan tu trong mang lam phan tu chot
void partition(int A[], int left, int right) {
if (A == NULL)
return;
int x = (A[left] + A[right]) / 2; // chon phan tu giua lam chot
int i = left; // gan bien chay i tu ben trai
int j = right; // gan bien chay j tu ben phai
if (left > right)
return; // neu phan tu trai > phai thi thoat khoi ham
else {
do {
while ((i <= j) && (x > A[i]))
i++; // vong lap ket thuc khi i>j hoac phan tu trai > chot
while ((i <= j) && (x < A[j]))
j--; // vong lap ket thuc khi i>j hoac phan tu phai < chot
if (i <= j) {
swap (A[i], A[j]); // hoan doi vi tri giua hai phan tu o tren
i++; // tiep tuc kiem tra cho i++
j--; // tiep tuc kiem tra cho j--;
}
} while (i <= j);
}
partition(A, left, j);
partition(A, i, right);
return;
}
// su dung quick Sort de sap xep
void quickSort(int A[], int &n) {
partition(A, 0, n - 1);
//return;
}
// ham main
int main() {
int *A, n;
A = new int[100];
cout << "Nhap vao so phan tu cua mang: ";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "Phan tu thu " << (i + 1) << ": ";
cin >> *(A + i);
}
quickSort(A, n);
for (int i = 0; i < n; i++) {
cout << "\t" << *(A + i);
}
return 0;
}