| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2228 人关注过本帖
标题:[求助]把字符串压入栈中
只看楼主 加入收藏
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
 问题点数:0 回复次数:9 
[求助]把字符串压入栈中
把字符串压入栈中,主要问题在红字处,谢谢大家帮我看看
于是写了如下程序,
#include <iostream>
#include <cstring>
using namespace std;
class Stack //l类的声明
{
struct Link
{
void * data;
Link * next;
Link(void * dat,Link * nxt);
~Link();
}* head;
public:
Stack();
~Stack();
Stack(Stack * p[5]);//构造函数的参数是指向对象的指针数组,
void push(void * dat);
void * peek();
void * pop();
};
Stack::Link::Link(void * dat,Link * nxt)//类的定义
{
data = dat;
next = nxt;
}
Stack::Link::~Link()
{

}
Stack::Stack()
{
head = 0;
}
Stack::Stack(Stack * p[5])//构造函数的参数是指向对象的指针数组,便历该数组并把指针压入stack中
{
for(int i = 0;i < 5;i++)//便历该数组并把指针压入stack中
push((Stack *) p[i]);
};
void Stack::push(void * dat)
{
head = new Link(dat,head);
}
void * Stack::peek()
{
return head->data;
}
void * Stack::pop()
{
if(head == 0) return 0;
void * result = head->data;
Link * oldHead = head;
head = head->next;
delete oldHead;
return result;
}
Stack::~Stack()
{
}
#include "Stack3.h"
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc,char * argv[])
{
string pp[]={"Mondat","Tuesday","wednesday","Thursda","Friday"};//字符传数组
Stack sk1[5];
for(int i = 0;i < 5;i++)
{
sk1[i].push(&pp[i]);//压入字符传数组
cout<<*(string*)sk1[i].pop()<<" ";//想让他输出字符串却是输出地址,于是我把这句改写成cout<<*(string*)sk1[i].pop()<<" ";编译时却出错,我该怎么改呢,谢谢大家
}
system("pause");
return 0;
}
搜索更多相关主题的帖子: 压入栈 void Stack Link 字符 
2006-04-09 18:53
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
好长啊,

woyaochengshuyidianle 我真的什么也不会
2006-04-09 18:55
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

我试了能输出单词啊


2006-04-09 19:04
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
woodhead大哥
我用的是VC,你是用VC吗?

woyaochengshuyidianle 我真的什么也不会
2006-04-09 19:06
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

不是. DEV

我觉得这个用void* 不如用模板.


2006-04-09 19:12
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
好的,谢谢你
我试试看,先去吃饭了 ^_^ ^_^

woyaochengshuyidianle 我真的什么也不会
2006-04-09 19:14
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

[CODE]#include <iostream>
using namespace std;

template <class T>
class Stack
{

private:
struct Node
{
T data;
Node *next, *prew;
};
Node *head;
Node *end;
int size;

public:
Stack();
~Stack();
Stack(T *p, int n);
bool empty() {return size == 0;}
void push(const T &d);
T& top();
void pop();
};

template <class T>
Stack<T>::Stack()
{
head = end = 0;
size = 0;
}

template <class T>
Stack<T>::Stack(T *p, int n)
{
for(int i=0; i<n; i++)
push(p[i]);
}

template <class T>
void Stack<T>::push(const T &d)
{
Node *tmp = new Node;
tmp->data = d;
tmp->next = 0;
if(head == 0)
{
head = end = tmp;
tmp->prew = 0;
}
else
{
end->next = tmp;
tmp->prew = end;
end = tmp;
}
size++;
}

template <class T>
T& Stack<T>::top()
{
return end->data;
}

template <class T>
void Stack<T>::pop()
{
if(size == 0)
return;
else
{
Node *tmp = end;
end = end->prew;
delete tmp;
size--;
}
}

template <class T>
Stack<T>::~Stack()
{
if(size != 0)
{
Node *tmp = head;
while(tmp != 0)
{
head = head->next;
delete tmp;
tmp = head;
}
}
}

int main()
{
string pp[]={"Mondat","Tuesday","wednesday","Thursda","Friday"};
Stack<string> sk;

for(int i=0; i<5; i++)
sk.push(pp[i]);

while(!sk.empty())
{
cout<<sk.top()<<endl;
sk.pop();
}
cout<<endl;

Stack<string>sk2(pp,5);
while(!sk2.empty())
{
cout<<sk2.top()<<endl;
sk2.pop();
}
system("pause");
return 0;
}[/CODE]

[此贴子已经被作者于2006-4-9 21:34:34编辑过]


2006-04-09 20:33
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
woodhead,你太好了,我好学学,谢谢你

woyaochengshuyidianle 我真的什么也不会
2006-04-09 20:46
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
稍微改一下.

2006-04-09 21:36
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
收藏
得分:0 
不知道这样行否
cout<<reinterpret_cast<char*>(sk1[i].pop())<<" ";

2006-05-27 11:28
快速回复:[求助]把字符串压入栈中
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025536 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved