用c写一个在链表头部插入头结点x的代码
时间: 2024-03-20 15:40:20 浏览: 19
以下是在链表头部插入头结点x的C语言代码:
```
struct Node {
int data;
struct Node *next;
};
struct Node *head = NULL;
struct Node *createNode(int data) {
struct Node *newNode = malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertAtBeginning(int data) {
struct Node *newNode = createNode(data);
if(head == NULL) {
head = newNode;
} else {
newNode->next = head;
head = newNode;
}
}
```
在此代码中,我们定义了一个 `Node` 结构体来表示链表中的每个节点。我们还定义了一个 `head` 指针,该指针指向链表的头节点。`createNode` 函数用于创建包含给定数据的新节点。`insertAtBeginning` 函数将新节点插入到链表的头部。如果链表为空,新节点将成为链表的头节点。否则,新节点将插入到头部,并将其 `next` 指针指向旧的头节点。
相关问题
双向链表头部插入一个结点c++代码
可以使用以下代码进行双向链表头部插入一个结点c:
```c++
struct ListNode {
int val;
ListNode *prev;
ListNode *next;
ListNode(int x) : val(x), prev(NULL), next(NULL) {}
};
ListNode* insert(ListNode* head, int val) {
ListNode* node = new ListNode(val);
if (head == NULL) {
return node;
}
node->next = head;
head->prev = node;
return node;
}
```
请问还有什么需要帮助的吗?
c语言写双向链表头部插入的代码
以下是C语言写双向链表头部插入的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
struct Node* prev;
};
struct Node* head = NULL;
void insertAtHead(int value) {
//创建一个新结点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
//设置结点的值
newNode->data = value;
newNode->prev = NULL;
//头结点为空时,将新结点设为头结点
if (head == NULL) {
newNode->next = NULL;
head = newNode;
return;
}
//将新结点插入链表头部
head->prev = newNode;
newNode->next = head;
head = newNode;
}
void printList() {
struct Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
insertAtHead(1);
insertAtHead(2);
insertAtHead(3);
insertAtHead(4);
printList();
return 0;
}
```
希望对你有所帮助,还有什么问题要问的吗?