链表实现初始化的c语言代码
时间: 2023-11-12 21:06:51 浏览: 44
以下是链表的初始化代码:
```c
struct Node {
int val;
struct Node* next;
};
struct Node* initList() {
struct Node* head = (struct Node*)malloc(sizeof(struct Node));
head->next = NULL;
return head;
}
```
这段代码定义了一个链表节点结构体 `Node`,包含了一个整数 `val` 和一个指向下一个节点的指针 `next`。`initList` 函数用于初始化链表,其中首先动态分配一个节点作为头节点 `head`,然后将其 `next` 指针设置为 `NULL`。最后将头节点指针返回作为链表的入口。
相关问题
链表实现栈的C语言代码
以下是链表实现栈的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结点
typedef struct Node{
int data;
struct Node* next;
} Node;
// 定义栈结构体
typedef struct Stack{
Node* top;
int size;
} Stack;
// 初始化栈
void initStack(Stack* s){
s->top = NULL;
s->size = 0;
}
// 判断栈是否为空
int isEmpty(Stack* s){
return s->size == 0;
}
// 入栈操作
void push(Stack* s, int data){
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = s->top;
s->top = newNode;
s->size++;
}
// 出栈操作
int pop(Stack* s){
if(isEmpty(s)){
printf("栈为空,无法出栈");
return -1;
}
int data = s->top->data;
Node* temp = s->top;
s->top = s->top->next;
free(temp);
s->size--;
return data;
}
// 获取栈顶元素
int peek(Stack* s){
if(isEmpty(s)){
printf("栈为空,无法获取栈顶元素");
return -1;
}
return s->top->data;
}
int main(){
Stack s;
initStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("栈顶元素为:%d\n", peek(&s));
printf("出栈元素为:%d\n", pop(&s));
printf("出栈元素为:%d\n", pop(&s));
printf("出栈元素为:%d\n", pop(&s));
printf("栈是否为空:%d\n", isEmpty(&s));
return 0;
}
```
在上面的代码中,我们使用了链表来实现栈。在栈的初始化函数中,我们将栈顶指针置为 NULL,并将栈的大小设为 0。在入栈操作时,我们创建一个新的链表结点,将其插入到链表的头部,并将栈顶指针指向该结点。在出栈操作时,我们首先判断栈是否为空,如果为空则输出错误信息;否则,我们取出栈顶元素,并将栈顶指针指向下一个结点。在获取栈顶元素时,我们同样需要判断栈是否为空。
链表初始化 C语言实例
链表的初始化包括两个步骤:定义链表的结构体和初始化链表头节点。
下面是一个链表的初始化 C语言实例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表结构体
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 初始化链表头节点
ListNode* initList() {
ListNode* head = (ListNode*)malloc(sizeof(ListNode)); // 申请头节点内存空间
head->val = 0; // 头节点的值可以是任意值
head->next = NULL; // 头节点的指针初始化为 NULL
return head;
}
int main() {
ListNode* head = initList(); // 初始化链表头节点
printf("链表初始化成功!\n");
return 0;
}
```
运行结果:
```
链表初始化成功!
```
在这个例子中,我们通过 `typedef` 定义了链表的结构体 `ListNode`,它包含一个整数类型的值 `val` 和一个指向下一个节点的指针 `next`。然后,我们通过 `initList` 函数初始化了链表头节点,该函数会返回头节点的指针。在 `main` 函数中,我们调用 `initList` 函数来初始化链表头节点并打印一条成功信息。
相关推荐
![](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)