C语言单链表添加元素代码
时间: 2023-06-03 20:02:18 浏览: 56
好的,以下是C语言单链表添加元素的代码示例:
```c
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* addNode(struct ListNode* head, int val) {
struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = val;
node->next = NULL;
if (head == NULL) {
head = node;
} else {
struct ListNode* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = node;
}
return head;
}
```
希望上述代码能够对您有所帮助。
相关问题
c语言单链表输入输出查找第i个元素主函数代码
下面是一个简单的单链表输入、输出和查找第i个元素的主函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
struct Node {
int data;
struct Node *next;
};
// 创建一个新节点
struct Node* newNode(int data) {
struct Node *node = (struct Node*)malloc(sizeof(struct Node));
node->data = data;
node->next = NULL;
return node;
}
// 在链表末尾添加一个节点
struct Node* appendNode(struct Node *head, int data) {
struct Node *node = newNode(data);
if (head == NULL) {
head = node;
} else {
struct Node *current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = node;
}
return head;
}
// 输出链表中的所有元素
void printList(struct Node *head) {
struct Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
// 查找链表中的第i个元素
struct Node* findNode(struct Node *head, int i) {
struct Node *current = head;
int j = 1;
while (current != NULL && j < i) {
current = current->next;
j++;
}
if (current == NULL || j > i) {
return NULL;
} else {
return current;
}
}
int main() {
struct Node *head = NULL;
// 输入数据,创建链表
int n;
printf("请输入节点个数:");
scanf("%d", &n);
printf("请输入节点数据:");
for (int i = 0; i < n; i++) {
int data;
scanf("%d", &data);
head = appendNode(head, data);
}
// 输出链表
printf("链表中的元素:");
printList(head);
// 查找第i个元素
int i;
printf("请输入要查找的元素位置:");
scanf("%d", &i);
struct Node *node = findNode(head, i);
if (node == NULL) {
printf("不存在第%d个元素\n", i);
} else {
printf("第%d个元素的值为%d\n", i, node->data);
}
return 0;
}
```
在上面的代码中,我们定义了一个 `Node` 结构体来表示链表节点,并实现了创建节点、在链表末尾添加节点、输出链表中的所有元素以及查找链表中的第i个元素等函数。在 `main` 函数中,我们首先让用户输入节点个数和节点数据,然后创建链表并输出链表中的所有元素。接着,让用户输入要查找的元素位置,调用 `findNode` 函数查找并输出该元素的值。
c语言单链表实现初始化、创建
单链表是一种常见的数据结构,用于存储一系列元素,每个元素包含一个值和一个指向下一个元素的指针。下面是 C 语言实现单链表的初始化和创建代码示例:
1.初始化单链表
```c
#include <stdio.h>
#include <stdlib.h>
/*定义单链表节点结构体*/
typedef struct node{
int data; //数据域
struct node *next; //指向下一个节点的指针
}Node,*pNode;
/*初始化单链表*/
pNode InitList(){
pNode head = (pNode)malloc(sizeof(Node)); //创建头节点
if(head == NULL){
printf("初始化失败,内存分配失败!\n");
exit(-1);
}
head->next = NULL; //初始化头节点的指针域为 NULL
return head;
}
```
2.创建单链表
```c
/*创建单链表*/
pNode CreateList(pNode head){
pNode p = head; //定义一个指针 p 指向头节点
int num; //定义一个变量用于存储节点的值
printf("请输入节点的值,输入 -1 结束:\n");
while(1){
scanf("%d",&num);
if(num == -1){ //输入 -1 时结束
break;
}
pNode new_node = (pNode)malloc(sizeof(Node)); //创建新节点
if(new_node == NULL){
printf("创建失败,内存分配失败!\n");
exit(-1);
}
new_node->data = num; //给新节点赋值
new_node->next = NULL; //初始化新节点的指针域为 NULL
p->next = new_node; //将新节点添加到链表尾部
p = new_node; //指针 p 指向新节点,准备添加下一个节点
}
return head;
}
```
以上代码实现了单链表的初始化和创建。初始化函数 `InitList()` 用于创建头节点并初始化,`CreateList()` 用于创建链表并添加节点。