c语言 栈举例 ,单链表和栈的区别
时间: 2023-07-14 13:14:26 浏览: 116
举例:
栈是一种后进先出(Last In First Out,LIFO)的数据结构,类比于我们日常生活中的弹夹或者一叠盘子。在C语言中,可以使用数组或者链表来实现栈。
以数组为例,我们可以定义一个栈结构体:
```c
#define MAX_SIZE 100 // 栈的最大容量
struct Stack {
int top; // 栈顶指针
int data[MAX_SIZE]; // 栈元素
};
```
然后,我们可以定义push和pop操作:
```c
void push(struct Stack *s, int x) {
if(s->top == MAX_SIZE - 1) { // 栈满了
printf("Stack is full\n");
return;
}
s->top++;
s->data[s->top] = x;
}
int pop(struct Stack *s) {
if(s->top == -1) { // 栈为空
printf("Stack is empty\n");
return -1;
}
int x = s->data[s->top];
s->top--;
return x;
}
```
单链表是一种线性数据结构,可以看做是由多个节点组成的链式结构。每个节点包含一个数据元素和一个指向下一个节点的指针。与栈不同的是,单链表可以在任意位置进行插入、删除等操作。
下面是一个简单的单链表结构体的定义:
```c
struct ListNode {
int val;
struct ListNode *next;
};
```
单链表通常有头指针和尾指针,操作的时候需要注意。
栈和单链表的区别在于,栈是一种特殊的数据结构,只能在栈顶进行插入和删除操作,而单链表可以在任意位置进行插入、删除等操作。另外,栈的访问方式是先进后出,而单链表没有这个限制。