链栈的基本操作

链栈的基本操作


2024年4月30日发(作者:)

链栈的基本操作

链栈是一种基于链表实现的栈结构,它的特点是可动态扩容,

不限制大小,可以存储任意类型的数据。

链栈的基本操作包括:创建、入栈、出栈、获取栈顶元素、判

断栈是否为空等。

1. 创建链栈

创建链栈的时候,我们需要先定义一个链栈结构体,其中包含

一个指向栈顶的指针和一个表示栈的长度的变量。

```

typedef struct Node {

int data;

struct Node *next;

} Node;

typedef struct Stack {

Node *top;

int length;

} Stack;

```

然后,我们需要编写一个函数来创建一个空的链栈。

```

Stack *createStack() {

Stack *stack = (Stack*)malloc(sizeof(Stack));

- 1 -

stack->top = NULL;

stack->length = 0;

return stack;

}

```

2. 入栈

入栈操作就是将一个元素压入栈顶,我们需要先创建一个新节

点,然后将新节点插入到栈顶位置。

```

void push(Stack *stack, int val) {

Node *node = (Node*)malloc(sizeof(Node));

node->data = val;

node->next = stack->top;

stack->top = node;

stack->length++;

}

```

3. 出栈

出栈操作就是将栈顶元素弹出,我们需要先获取栈顶元素,然

后将栈顶指针指向下一个节点。

```

int pop(Stack *stack) {

- 2 -

if (stack->top == NULL) {

printf('栈已经为空!

');

return -1;

}

Node *node = stack->top;

int val = node->data;

stack->top = node->next;

free(node);

stack->length--;

return val;

}

```

4. 获取栈顶元素

获取栈顶元素操作就是获取栈顶节点的值,但不删除该节点。

```

int getTop(Stack *stack) {

if (stack->top == NULL) {

printf('栈已经为空!

');

return -1;

}

- 3 -

return stack->top->data;

}

```

5. 判断栈是否为空

判断栈是否为空操作就是判断栈顶指针是否为空。

```

int isEmpty(Stack *stack) {

return stack->top == NULL;

}

```

通过以上基本操作,我们就可以使用链栈来存储数据,并进行

一些基本的数据操作。

- 4 -


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714430365a2444948.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信