使用尾插法建立带头结点的单链表
时间: 2023-05-30 16:02:00 浏览: 164
以下是使用尾插法建立带头结点的单链表的示例代码:
```c++
#include <iostream>
using namespace std;
typedef struct Node {
int data;
struct Node *next;
} ListNode, *LinkedList;
LinkedList createList() {
LinkedList head = new ListNode; // 创建头结点
head->next = NULL; // 初始化为空链表
ListNode *tail = head; // tail指向尾结点
int n;
cout << "请输入链表长度:";
cin >> n;
for (int i = 0; i < n; i++) {
int val;
cout << "请输入第" << i+1 << "个结点的值:";
cin >> val;
ListNode *newNode = new ListNode; // 创建新结点
newNode->data = val;
newNode->next = NULL;
tail->next = newNode; // 将新结点插入到尾结点之后
tail = newNode; // 更新尾结点
}
return head; // 返回头结点
}
void printList(LinkedList head) {
ListNode *p = head->next; // p指向首结点
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
LinkedList L = createList();
cout << "创建的链表为:";
printList(L);
return 0;
}
```
在上述代码中,`createList()`函数使用尾插法建立带头结点的单链表。首先创建头结点`head`,将其`next`指针初始化为空链表。然后输入链表长度`n`,循环`n`次,每次输入一个结点的值`val`,创建一个新结点`newNode`,将其插入到尾结点`tail`之后,更新尾结点为新结点。最后返回头结点`head`。
`printList()`函数用于输出链表中所有结点的值,从首结点开始遍历链表,依次输出每个结点的值。
在`main()`函数中,首先调用`createList()`函数创建一个链表`L`,然后调用`printList()`函数输出该链表中所有结点的值。
运行示例程序,输入链表长度为5,以及每个结点的值,得到如下输出:
```
请输入链表长度:5
请输入第1个结点的值:1
请输入第2个结点的值:2
请输入第3个结点的值:3
请输入第4个结点的值:4
请输入第5个结点的值:5
创建的链表为:1 2 3 4 5
```
阅读全文