设计一个创建单链表的方法并在主函数内调用
时间: 2024-06-04 13:13:51 浏览: 7
//定义单链表结点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
//创建单链表
ListNode* createLinkedList(vector<int>& nums) {
ListNode* dummy = new ListNode(0);
ListNode* cur = dummy;
for (int i = 0; i < nums.size(); i++) {
cur->next = new ListNode(nums[i]);
cur = cur->next;
}
return dummy->next;
}
//主函数
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
ListNode* head = createLinkedList(nums);
while (head != NULL) {
cout << head->val << " ";
head = head->next;
}
return 0;
}
相关问题
用c语言创建一个单链表并运行出来
可以使用C语言的结构体来创建单链表,具体步骤如下:
1. 定义一个结构体,包含一个数据域和一个指向下一个节点的指针域。
```
struct Node {
int data;
struct Node* next;
};
```
2. 创建一个头节点,并将其指针域置为NULL。
```
struct Node* head = NULL;
```
3. 定义一个函数,用于在链表末尾添加节点。
```
void append(int data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = data;
new_node->next = NULL;
if (head == NULL) {
head = new_node;
return;
}
struct Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
```
4. 在主函数中调用append函数,添加节点并输出链表中的所有元素。
```
int main() {
append(1);
append(2);
append(3);
struct Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
return ;
}
```
输出结果为:1 2 3
注意:以上代码仅为示例,实际应用中需要根据具体需求进行修改和完善。
头插法创建单链表并输出
头插法创建单链表并输出的方法如下所示:
首先,我们需要定义一个结构体来表示链表节点,包括数据域和指向下一个节点的指针。
然后,我们需要编写一个函数来实现头插法创建单链表。该函数的逻辑如下:
1. 首先声明一个头结点,并将其指针指向NULL。
2. 然后读取用户输入的数据,如果输入的数据不等于9999,则进行以下操作:
- 创建一个新的节点,并将用户输入的数据赋值给新节点的数据域。
- 如果头结点的下一个指针为空,将新节点的指针指向空,并将新节点赋值给头结点的下一个指针。
- 否则,将新节点的指针指向头结点的下一个指针,并将新节点赋值给头结点的下一个指针。
- 继续读取下一个用户输入的数据。
3. 最后,返回头结点。
接下来,我们需要编写一个函数来输出链表中的元素。该函数的逻辑如下:
1. 首先将传入的链表指针指向链表的第一个节点。
2. 然后,判断链表指针是否为空,如果不为空,则执行以下操作:
- 输出当前节点的数据域。
- 将链表指针指向下一个节点。
3. 重复步骤2,直到链表指针为空。
最后,我们在主函数中调用头插法创建单链表的函数和输出链表中元素的函数。
请注意,需要在程序开头包含<stdio.h>头文件,并且在头插法创建单链表的函数中使用动态内存分配函数malloc来分配节点内存空间。另外,还需注意在编写程序时,将Main函数定义在自定义函数的下方或者在上方写出定义了哪些方法。如果返回值是指针类型,在声明方法时,也需要加上指针符号。
下面是一个示例的代码:
```
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
} Lnode;
Lnode *Head_Insert(){
Lnode *ptemp = NULL;
Lnode *HeadNode = NULL;
Lnode *p;
HeadNode = (Lnode*)malloc(sizeof(Lnode));
HeadNode->next = NULL;
int x;
scanf("%d",&x);
while(x != 9999){
ptemp = (Lnode*)malloc(sizeof(Lnode));
ptemp->data = x;
ptemp->next = NULL;
if(HeadNode->next == NULL){
HeadNode->next = ptemp;
}
else{
ptemp->next = HeadNode->next;
HeadNode->next = ptemp;
}
scanf("%d",&x);
}
return HeadNode;
}
void printList(Lnode *L){
L = L->next;
while(L!=NULL){
printf("%d ",L->data);
L = L->next;
}
}
int main(){
Lnode *t =Head_Insert();
printList(t);
return 0;
}
```
这个代码会根据用户输入的数据,使用头插法创建一个单链表,并输出链表中的元素。<span class="em">1</span><span class="em">2</span>
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)