创建一个c++单项链表
时间: 2023-08-31 10:29:34 浏览: 130
数据结构与算法 c++实现 两个单链表合并为一个单链表,两个表的元素交错排列,新表用原表结点的内存空间 按元素序列的奇偶分割单
5星 · 资源好评率100%
### 回答1:
我可以给你一个简单的示例,来帮助你创建一个C单链表: #include<stdio.h> struct node {
int data;
struct node *next;
}; struct node *head; // 新建节点
struct node* newNode(int data) {
struct node* new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->next = NULL;
return new_node;
} // 在链表头部插入新节点
void push(int data) {
struct node* new_node = newNode(data);
new_node->next = head;
head = new_node;
} // 打印链表
void printList() {
struct node* temp = head;
while(temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
} int main() {
head = NULL; // 初始化头指针
push(3);
push(2);
push(1);
printf("链表中的元素: ");
printList();
return 0;
}
### 回答2:
创建一个C单向链表的方式如下:
首先,我们需要定义一个C结构体,表示链表的每个节点,示例如下:
```c
struct Node {
int data; // 节点数据
struct Node* next; // 下一个节点的指针
};
```
接着,我们需要编写一个函数,用于向链表中插入元素,示例如下:
```c
struct Node* insert(struct Node* head, int data) {
// 创建一个新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
if (head == NULL) {
// 如果链表为空,将新节点作为头节点
head = newNode;
} else {
// 如果链表不为空,寻找最后一个节点
struct Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
// 将新节点插入到最后一个节点的后面
temp->next = newNode;
}
return head;
}
```
最后,我们可以编写一个主函数,用于创建并展示链表,示例如下:
```c
int main() {
struct Node* head = NULL;
// 向链表中插入元素
head = insert(head, 1);
head = insert(head, 2);
head = insert(head, 3);
head = insert(head, 4);
// 遍历链表并输出每个节点的值
struct Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
return 0;
}
```
以上就是创建一个C单向链表的基本步骤,通过调用insert函数可以向链表中插入元素,并通过遍历链表输出每个节点的值。
### 回答3:
创建一个C语言单项链表需要以下几个步骤:
首先,定义链表的节点结构体,包含两个成员:一个是存储数据的数据域,另一个是指向下一个节点的指针域。结构体可以如下定义:
```c
struct Node {
int data; // 数据域
struct Node* next; // 指针域
};
```
然后,创建链表的头节点,并初始化为NULL。
```c
struct Node* head = NULL;
```
接下来,可以通过创建一个函数来添加节点。这个函数接受一个整数作为参数,并将其作为新节点的数据域的值。新节点加入链表时,分为两种情况:链表为空或链表不为空。具体实现如下:
```c
void addNode(int data) {
// 创建新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
// 如果链表为空,将新节点设为头节点
if (head == NULL) {
head = newNode;
} else { // 如果链表不为空,找到最后一个节点,并将新节点加到其后
struct Node* lastNode = head;
while (lastNode->next != NULL) {
lastNode = lastNode->next;
}
lastNode->next = newNode;
}
}
```
最后,可以以某种方式遍历链表,并打印出节点的值。例如,可以创建一个函数来实现遍历并打印的功能:
```c
void printList() {
struct Node* currentNode = head;
// 依次遍历链表并输出每个节点的值
while (currentNode != NULL) {
printf("%d ", currentNode->data);
currentNode = currentNode->next;
}
printf("\n");
}
```
通过调用addNode函数,可以向链表中添加节点;通过调用printList函数,可以将链表中的节点值打印出来。
这样,一个简单的C语言单项链表即创建完成了。
阅读全文