初学者的问题.

时间:2022-05-05 04:00:49
初学C.不太理解堆栈的应用.
谁给我写一个压堆和出栈的小例子。并加以说明。

7 个解决方案

#1


栈是一个先进后出的数据结构
int stack[10];//定义栈的大小为10
int n=0;//定义栈顶位置
void push(int i)//进栈
{
  stack[n]=i;
   ++n;
}
int pop()//出栈
{
  int r=stack[n];
  --n;
}

#2


int stack[10];
int pos=3;
int pop(int &a)  //一般出栈都要把所出栈的元素带回去检验或看一看
{
  a=stack[pos--];
}
int main()
{
 int a;
 pop(a);
 cout<<a<<endl;
return 0;
}

#3


kwok_1980很细心

#4


初学数据结构的栈,你可以在草稿纸上模仿栈的出栈、进栈。

#5


我还不是太明白
进栈就是对一个数组进行付值,出栈就是把数组中的值传给变量.但它要有一个先进后出的顺序,我这样说对吗?

 liushmh(c++)
 
int stack[10];//定义一个数组
int n=0;//定义栈顶位置//它并没有和stack[]有什么关系只能说是一个变量.
void push(int i)//进栈
{
  stack[n]=i;
   ++n;          /*这句有什么意义?*/
}
int pop()//出栈
{
  int r=stack[n];
  --n;           /*这句有什么意义?*/
}

真是谢谢你。刚才你回答的问题我以经结了.

#6


简单地说:
堆栈说白了就是一维数组,先定义这一维数组,(包括数组大小,以及指向数组中元素的指针变量,地址符变量)。再定义对数组进行存取操作的两个函数,存数据函数,和取数据函数。然或就可以用这一维数组存数据了。在别的函数中,如果要对数据存取,调用两个存取数据的函数来进行存取操作即可。(由于存取函数的定义特点,数据先存的最后才能取出,反之,后存的则可先取出。)这样就可以避免在主函数或其他函数中再定义数组,并进行读写操作的繁琐步骤。
(个人见解,如有错误,还请见谅)

#7



   ++n;          /*这句有什么意义?*/
这句话表示进了一个元素 栈顶加1
int pop()//出栈
{
  n--;//要改改,表示出元素,栈顶向下移
  int r=stack[n];
             /*这句有什么意义?*/
}
你可以单步调试,看看运行的过程,就明白了


#1


栈是一个先进后出的数据结构
int stack[10];//定义栈的大小为10
int n=0;//定义栈顶位置
void push(int i)//进栈
{
  stack[n]=i;
   ++n;
}
int pop()//出栈
{
  int r=stack[n];
  --n;
}

#2


int stack[10];
int pos=3;
int pop(int &a)  //一般出栈都要把所出栈的元素带回去检验或看一看
{
  a=stack[pos--];
}
int main()
{
 int a;
 pop(a);
 cout<<a<<endl;
return 0;
}

#3


kwok_1980很细心

#4


初学数据结构的栈,你可以在草稿纸上模仿栈的出栈、进栈。

#5


我还不是太明白
进栈就是对一个数组进行付值,出栈就是把数组中的值传给变量.但它要有一个先进后出的顺序,我这样说对吗?

 liushmh(c++)
 
int stack[10];//定义一个数组
int n=0;//定义栈顶位置//它并没有和stack[]有什么关系只能说是一个变量.
void push(int i)//进栈
{
  stack[n]=i;
   ++n;          /*这句有什么意义?*/
}
int pop()//出栈
{
  int r=stack[n];
  --n;           /*这句有什么意义?*/
}

真是谢谢你。刚才你回答的问题我以经结了.

#6


简单地说:
堆栈说白了就是一维数组,先定义这一维数组,(包括数组大小,以及指向数组中元素的指针变量,地址符变量)。再定义对数组进行存取操作的两个函数,存数据函数,和取数据函数。然或就可以用这一维数组存数据了。在别的函数中,如果要对数据存取,调用两个存取数据的函数来进行存取操作即可。(由于存取函数的定义特点,数据先存的最后才能取出,反之,后存的则可先取出。)这样就可以避免在主函数或其他函数中再定义数组,并进行读写操作的繁琐步骤。
(个人见解,如有错误,还请见谅)

#7



   ++n;          /*这句有什么意义?*/
这句话表示进了一个元素 栈顶加1
int pop()//出栈
{
  n--;//要改改,表示出元素,栈顶向下移
  int r=stack[n];
             /*这句有什么意义?*/
}
你可以单步调试,看看运行的过程,就明白了