|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- struct IOStack
- {
- //栈的结构体定义
- std::string *base; //底部指针
- std::string *top; //顶部指针
- int StackSize; //栈容量
- };
- void InitStack(IOStack *s, int a)
- {
- //初始化栈
- s->base = new std::string[a]; //申请空间
- if (!((s->base) == 0))
- {
- return;
- }
- s->top = s->base; //顶底同址
- s->StackSize = a; //栈大小
- }
- void Push(IOStack *s, std::string *e)
- {
- //入栈操作
- *(s->top) = *e;
- (s->top)++;
- if ((s->top) >= (s->base + s->StackSize)) //如果空间不够了,就需要重新申请更大的空间
- {
- IOStack ss; //申请一个新的栈结构
- InitStack(&ss, 2 * (s->StackSize)); //调用栈的初始化函数
- for (int i = 0; i < s->StackSize; i++) //将原来栈中的值依次赋值给新的栈
- {
- *(ss.base + i) = *(s->base + i);
- }
- delete[](s->base); [size=6]//注意,我在这里将原来的栈删除了[/size]
- s->base = ss.base; [size=6]//请问:我这里的操作对么?还能不能将SS的地址赋值给S->base?[/size]
- s->top = s->base + s->StackSize;
- s->StackSize = 2 * s->StackSize;
- }
- }
复制代码 |
|