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

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:55:40
#include<stdio.h>
#include<alloc.h>
struct zhan
{
int *top;
int *base;
}*hui;

main()
{
char c[10],c1[10];
int i,j=0;

scanf("%s",c);

hui->base=(char*)malloc(10*sizeof(char));/*在这个地方有错误,但是我怎么也找不出错在哪儿*/
hui->top=hui->base;

for(i=0;i<10;i++)
{
*hui->top=c[i];
hui->top++;
}

for(i=0;i<10;i++)
{
c1[i]=*(hui->top-1);
hui->top--;
}

for(i=0;i<10;i++)
{
if (c[i]!=c1[i])
{
j=1;
}
}
if (j==0)
{
print("THIS IS HUI!");
}
else
{
print("It false!");
}
}

而且我个人认为栈是否也不需要结构,比如只要2个指针变量 *p1 和 *p2
p1=(char*)malloc(sizeof(char)*len);
p2=p1;

/*入栈(e为放入数据)*/
p1=e;
p1++;

/*出栈*/
e=p1-1;
p1--;
不知道这样是否也可以呢,因为没有解决掉上面的malloc函数的问题,

不知道你写的到底是什么,看不懂!
#define MAXSIZE 60
main()
{
char zhan[MAXSIZE],ch,i;
int top=0;
scanf("%c",&ch);
while(ch!='#')
{zhan[top++]=ch; //入栈
scanf("%c",&ch);}
top--;
while(top>=0)
printf("%c",zhan[top--]); //出栈
getch();
}
以上为顺序表存储!
链式存储
定义 结构体栈元素
struct vertype DNode
{ char data;
DNode *next;}Node;}
自己多想想就知道了,和上面的大同小异。

base被定义为int的指针,却传给他一个char型的指针

char和int虽然经常通用,但char是8位,int是16位,两者还是不一样的。

base 定义成 int* 为什么要 强制 转化为 char*