C++用尾插法创建一个带头节点的单链表,获得最后一个节点的位置后使p指向该节点
时间: 2023-03-31 16:02:29 浏览: 111
好的,我可以回答这个问题。首先,我们需要定义一个结构体来表示单链表的节点,包括数据域和指向下一个节点的指针。然后,我们创建一个头节点,并将其指针赋给p。接下来,我们循环读入数据,每读入一个数据就创建一个新节点,并将其插入到链表的末尾。当读入结束后,p指向的节点就是链表的最后一个节点。
相关问题
C++用尾插法创建一个带头节点的单链表写出代码
好的,以下是用尾插法创建一个带头节点的单链表的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkedList;
LinkedList createList() {
LinkedList head = (LinkedList) malloc(sizeof(Node));
head->next = NULL;
return head;
}
void insert(LinkedList head, int data) {
Node *newNode = (Node*) malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
Node *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
}
int main() {
LinkedList list = createList();
insert(list, 1);
insert(list, 2);
insert(list, 3);
Node *p = list->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return ;
}
```
希望能够帮到您!
尾插法创建一个带头单链表
尾插法创建带头单链表的步骤如下:
1. 定义一个头结点,初始化为空链表。
2. 定义一个指针p指向头结点。
3. 循环输入节点的值,直到输入-1为止。
4. 动态申请一个节点空间,将输入的值存入节点中。
5. 将p指针指向新申请的节点。
6. 将新节点的next指针置为NULL。
7. 将p指针移动到新节点上。
8. 重复步骤3-7,直到输入-1结束。
下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createList() {
ListNode* head = new ListNode(0); // 头结点
ListNode* p = head; // 指向尾部的指针
int x;
cin >> x;
while (x != -1) {
ListNode* node = new ListNode(x);
p->next = node;
p = node;
cin >> x;
}
return head;
}
void printList(ListNode* head) {
ListNode* p = head->next;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
}
int main() {
ListNode* head = createList();
printList(head);
return 0;
}
```
阅读全文