sách gpt4 ăn đã đi

Phương pháp thực hiện thứ tự đảo ngược danh sách liên kết C++

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 28 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN Phương pháp thực hiện thứ tự đảo ngược danh sách liên kết C++ này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Bài viết này trình bày phương pháp triển khai thứ tự đảo ngược danh sách liên kết trong C++ thông qua một ví dụ có giá trị tham khảo tốt cho việc học cấu trúc dữ liệu C++. Các phương pháp cụ thể như sau:

Trước hết, khó khăn khi đảo ngược danh sách liên kết C++ là làm thế nào để sửa đổi từng danh sách một. Mặc dù nó không phải là một mảng, nhưng ý tưởng gần như giống nhau, vì vậy bạn có thể sử dụng chuỗi for và một con trỏ tương ứng với i trong vòng lặp for. Chỉ cần nhớ nút trước và nút tiếp theo, đặc biệt là nút sau, vì nó sẽ như vậy. không thể truy cập được sau khi sửa đổi ở phía sau, vì vậy nó cần được ghi lại. Mỗi vòng lặp for chỉ thay đổi con trỏ của nút được trỏ tới, do đó sẽ không có sự hỗn loạn.

Rất dễ hiểu khi sử dụng vòng lặp for. Mã ví dụ như sau:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include
#include
#include
 
sử dụng không gian tên tiêu chuẩn;
 
//Lớp nút danh sách liên kết
lớp học Nút
{
riêng tư :
   số nguyên dữ liệu m;
   Nút* m_next;
 
   Nút(Nút&) {}    //không cho phép sao chép constructor
 
công cộng :
   rõ ràng Nút( số nguyên giá trị = 0) : dữ liệu m(giá trị), m_tiếp theo(NULL) {}
   số nguyên lấyDữ liệu() hằng số { trở lại m_dữ_liệu; }
   vô hiệu setData( số nguyên val) { dữ liệu m = val; }
   Nút* getNext( vô hiệu ) hằng số { trở lại m_tiếp theo; }
   vô hiệu setNext(Nút* p) { m_next = p; }
};
 
// danh sách liên kết
lớp học Danh sách của tôi
{
riêng tư :
   Nút* m_head;  //pionter đến nút đầu tiên của danh sách
   Nút* m_tail;  //pointer đến nút cuối cùng của danh sách
 
   Danh sách của tôi(Danh sách của tôi&) {}
công cộng :
   rõ ràng MyList() : m_head(NULL), m_tail(NULL) {}
   vô hiệu addNode(Node* pNode);
   vô hiệu trình diễn( vô hiệu ) hằng số ;
   vô hiệu đảo ngược( vô hiệu );
   vô hiệu lau dọn( vô hiệu );
};
 
vô hiệu MyList::addNode(Nút* pNode)
{
   nếu như (đầu_tôi)
   {
     m_tail->setNext(pNode);
     m_tail = pNode;
   }
   khác    //danh sách trống
   {
     m_head = pNode;
     m_tail = pNode;
   }
}
 
vô hiệu Danh sách của tôi::show( vô hiệu ) hằng số
{
   Nút* pNode = m_head;
   trong khi (nút p)
   {
     std::cout << pNode->getData() << " " ;
     pNode = pNode->getNext();
   }
}
 
vô hiệu Danh sách của tôi::đảo ngược( vô hiệu )
{
   Nút* preNode = NULL;    // Con trỏ trước đó bên dưới
   Nút* pNode ;    //Trỏ tới mỗi nút, tương đương với một con trỏ
   Nút* sau Nút;    // Con trỏ trước đó ở trên
 
   (pNode = m_head; pNode != NULL; pNode = afterNode)  // Mỗi vòng lặp ở đây tương ứng với một nút, về cơ bản tương tự như nguyên tắc của một mảng.
   {
     afterNode = pNode->getNext();
     pNode->setNext(preNode);
     preNode = pNode;
   }
 
   pNode = m_head;  //Trao đổi con trỏ đầu và đuôi
   m_đầu = m_đuôi;
   m_tail = pNode;
}
 
vô hiệu Danh sách của tôi::sạch( vô hiệu )
{
   nếu như (đầu_tôi)
   {
     Nút* pNode = m_head;
     Nút* pTemp;
     trong khi (nút p)
     {
       pTemp = pNode->getNext();
       delete Nút p;
       pNode = pTemp;
     }
 
     m_head = m_tail = NULL;
   }
}
 
số nguyên chủ yếu( vô hiệu )
{
   Danh sách MyList
 
   srand ((chưa ký) thời gian (VÔ GIÁ TRỊ));
   ( số nguyên tôi = 0; tôi < 9; tôi++)
   {
     số nguyên nhiệt độ = rand () % 50;
     Nút* pNode = mới Nút(temp);
     listHead.addNode(pNode);
   }
   listHead.show();
 
   listHead. đảo ngược();
   lệnh cout << kết thúc;
   listHead.show();
   listHead. clean();
   listHead.show();
  
   hệ thống ( "tạm dừng" );
}

Tôi tin rằng các ví dụ trong bài viết này có thể dùng làm tài liệu tham khảo cho mọi người tìm hiểu các thuật toán và cấu trúc dữ liệu C++.

Cuối cùng, bài viết này về phương pháp thực hiện danh sách liên kết theo thứ tự ngược trong C++ sẽ kết thúc tại đây. Nếu bạn muốn biết thêm về phương pháp thực hiện thứ tự ngược của danh sách liên kết trong C++, vui lòng tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. blog của tôi trong tương lai! .

28 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress