fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // Khai báo cấu trúc Node
  5. struct Node {
  6. int data;
  7. Node* pNext;
  8. };
  9.  
  10. // Khai báo cấu trúc LIST (danh sách liên kết đơn)
  11. struct LIST {
  12. Node* pHead;
  13. Node* pTail;
  14. };
  15.  
  16. // Khởi tạo danh sách rỗng
  17. void KhoiTaoDanhSach(LIST &ds) {
  18. ds.pHead = NULL;
  19. ds.pTail = NULL;
  20. }
  21.  
  22. // Tạo một Node mới
  23. Node* TaoNode(int x) {
  24. Node* p = new Node;
  25. p->data = x;
  26. p->pNext = NULL;
  27. return p;
  28. }
  29.  
  30. // Hàm chèn một phần tử vào cuối danh sách
  31. void ChenCuoi(LIST &ds, Node *p) {
  32. if (ds.pHead == NULL) { // Nếu danh sách rỗng
  33. ds.pHead = ds.pTail = p;
  34. } else { // Nếu danh sách đã có phần tử
  35. ds.pTail->pNext = p;
  36. ds.pTail = p;
  37. }
  38. }
  39.  
  40. // Hàm nhập danh sách
  41. void NhapDanhSach(LIST &ds) {
  42. int n, x;
  43. cout << "Nhap so luong phan tu: ";
  44. cin >> n;
  45.  
  46. for (int i = 0; i < n; i++) {
  47. cout << "Nhap gia tri phan tu thu " << i + 1 << ": ";
  48. cin >> x;
  49.  
  50. Node* p = TaoNode(x);
  51. ChenCuoi(ds, p);
  52. }
  53. }
  54.  
  55. // Hàm xuất danh sách
  56. void XuatDanhSach(LIST ds) {
  57. Node* p = ds.pHead;
  58. while (p != NULL) {
  59. cout << p->data << " ";
  60. p = p->pNext;
  61. }
  62. cout << endl;
  63. }
  64.  
  65. // Hàm chính
  66. int main() {
  67. LIST ds;
  68. KhoiTaoDanhSach(ds);
  69.  
  70. // Nhập danh sách
  71. NhapDanhSach(ds);
  72.  
  73. // Xuất danh sách
  74. cout << "Danh sach vua nhap: ";
  75. XuatDanhSach(ds);
  76.  
  77. return 0;
  78. }
  79.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Nhap so luong phan tu: Danh sach vua nhap: