c语言数据结构栈的初始化

img

  1. 栈顶指针int top,这是不是出错了呢? 为什么不是int* top
  2. .初始化时,S.top是什么意思,这个. 具体是什么意思呢
  1. top是数组索引,所以是int,没问题
  2. 这个是C语言的结构体使用的写法,S是SqStack的变量,S.top是访问这个变量的top属性
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7731252
  • 除此之外, 这篇博客: 数据结构之栈中的 (5)初始化top初始值的俩种情况 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 以下回答由chatgpt基于相关博客总结生成:

    回答:

    在C语言中,对于栈这种数据结构来说,栈顶指针应该声明为int top。因为在静态栈中,top虽然是一个整型数据,但是它是用来标记栈顶的位置的,而不是指向下一个数据元素的地址,因此,把它称为指针可能会导致理解上的偏差。

    进行栈的初始化时,S.top的含义是用来标记栈顶位置的。具体来说,在初始化栈的时候,我们把top置为0,表示栈为空,还没有元素。之后,每当我们往栈中添加一个元素时,都会先向S.s[top]赋值,再将top加1。这样,top就会一步步地向栈顶方向移动,标记着栈顶元素的位置。

    在具体实现时,可能会写一个Initiazation函数来初始化栈,代码如下:

    void Initiazation (stack &S)
    {
        S.top=0; //把top置为0,表示栈为空
    }
    

    压栈操作可以用一个PushStack函数来实现,代码如下:

    void PushStack (stack &S, int e)
    {
        S.s[S.top] = e;  //先向top所指向的数组进行赋值,值为e
        S.top++;         //再将top加1,指向下一个位置
    }
    

    其中,参数e代表要压入栈中的元素。这个函数会先把e赋值给S.s[S.top],然后再将top加1。这样,top就会向栈顶位置移动,同时栈中也会多一个元素。