单链表和栈的区别 举例C语言 详细举例
时间: 2023-07-14 13:14:18 浏览: 106
堆栈· 用单链表实现一个堆栈
单链表和栈都是常见的数据结构,但它们的实现和应用场景有所不同。
单链表是一种线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。相比于数组,单链表的大小可以动态调整,插入和删除操作也比较方便。下面是一个用C语言实现的单链表的例子:
```c
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* createNode(int val) {
struct ListNode* node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = val;
node->next = NULL;
return node;
}
void insertNode(struct ListNode* head, int val) {
struct ListNode* node = createNode(val);
while (head->next != NULL) {
head = head->next;
}
head->next = node;
}
void deleteNode(struct ListNode* head, int val) {
struct ListNode* prev = head;
while (prev->next != NULL && prev->next->val != val) {
prev = prev->next;
}
if (prev->next == NULL) {
return;
}
struct ListNode* node = prev->next;
prev->next = node->next;
free(node);
}
```
栈是一种后进先出(LIFO)的数据结构,它的操作只在栈顶进行。栈可以用数组或链表实现。栈通常用于表达式求值、函数调用等场景。下面是一个用C语言实现的栈的例子:
```c
typedef struct {
int top;
int arr[1000];
} Stack;
void push(Stack* stack, int val) {
stack->arr[++stack->top] = val;
}
int pop(Stack* stack) {
return stack->arr[stack->top--];
}
int isEmpty(Stack* stack) {
return stack->top == -1;
}
```
总的来说,单链表和栈虽然都是常见的数据结构,但它们的实现和应用场景不同。单链表适用于需要动态调整大小、插入和删除操作频繁的场景;而栈适用于后进先出的场景,比如表达式求值、函数调用等。
阅读全文