| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1454 人关注过本帖
标题:[求助]一个关于队和栈的问题
只看楼主 加入收藏
anhua200hl
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-10-10
收藏
 问题点数:0 回复次数:9 
[求助]一个关于队和栈的问题

设S是一个栈,栈中有n个元素,依次是a1,a2,a3,......an。栈顶元素为an。Q是一个队,也有n个元素,依次是b1,b2,b3.....bn,队头元素是b1,假设S,Q的空间足够大,要将S的元素移到Q中,元素的排列为交替,既a1,b1,a2,b2...................an,bn.

本人只知道算法,但是不知道怎么用C/C++实现,哪个帮忙写一下,谢谢拉

------------------------------------------

我是菜鸟,我想飞........................

搜索更多相关主题的帖子: 元素 
2004-10-14 12:15
anhua200hl
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-10-10
收藏
得分:0 

怎么没人回答啊?


我是菜鸟,我想飞..............................
2004-10-15 15:10
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
呵呵,你自己是斑竹了嘛……
2004-10-17 09:52
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
好久没看数据结构,我下去看看,可能过几天才有。
2004-10-17 09:53
anhua200hl
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-10-10
收藏
得分:0 

自己是版主就不能问问题吗???????


我是菜鸟,我想飞..............................
2004-10-18 07:36
shlain
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-10-18
收藏
得分:0 

o

我刚学 请问这道题的算法是什么 ??

请发到我的邮箱好吗?

shlainsam@163.com

2004-10-18 20:33
三少爷
Rank: 1
等 级:新手上路
帖 子:192
专家分:0
注 册:2004-4-29
收藏
得分:0 

先设一个2n长的队列P,依次从尾部入对a1,b1,a2,b2...an,bn,再把P中的元素塞入Q中

这是比较直观的做法,还有一种可能效率更高耗存更低更富技巧的方法就是,a1先入Q队尾,b1入S栈头,

在Q中将所有元素向队头移动一位,在将b1推入Q尾部,哦实际操作可能更复杂一点,但一定是可行的,有空再说啦

[此贴子已经被作者于2004-10-18 23:15:36编辑过]


2004-10-18 23:14
生姜
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-4-5
收藏
得分:0 

不知道下面的算法可以不可以? 我的QQ:278674568 #define LEN sizeof(struct sb) #define NULL 0 #include<stdio.h> struct sb {char ch; struct sb *next; }; struct sb *base,*top,*p;

void creat() /*chushihua*/ {char str[100]; int i=0; printf("\nIMPUT:"); scanf("%s",str); top=base=p=(struct sb *)malloc(LEN); top->ch=str[i]; top->next=NULL; i++; while(str[i]!=NULL) {top=(struct sb *)malloc(LEN); top->ch=str[i]; p->next=top; top->next=NULL; p=top; i++; } } void in() {char la; printf("\nIMput:"); la=getchar(); top=(struct sb *)malloc(LEN); top->ch=la; p->next=top; p=top; top->next=NULL; printf("\nIN successfully!\n"); } out() {base=base->next; printf("OUT SUCCESSFULLY"); } void print() {struct sb *b; b=base; if(base==NULL) printf("NONE OF CHARS!\n"); else printf("\nTHOSE DATA ARE:"); while(b->next!=NULL) { printf("%3c",b->ch); b=b->next; } printf("%3c",b->ch); }

void choose() { printf("\n1:in.\n2:out.\n3:print.\n4:exit.\n"); } main() { char mm; int xuan; creat(); do {choose(); scanf("%d",&xuan);

switch(xuan) {case 1:in();break;

case 2: out();break; case 3: print();break; defult: break; } }while(xuan<4);

}

2005-04-13 21:25
shanji
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2005-1-23
收藏
得分:0 
2005-04-14 14:17
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 

#include<iostream> #include<string.h> #include"LinQueue.h" #include"LinStack.h" using namespace std; void main(){ Queue<int> Q; LinStack<int> S; int i,z=0; int a[]={1,3,5,7,9},b[]={10,8,6,4,2}; for(i=0;i<5;i++) {Q.EnQue(a[i]); S.Push(b[i]); } while(z<i){ int temp,temp2; temp=Q.DeQue(); Q.EnQue(temp); temp2=S.pop(); Q.EnQue(temp2); z++; } for(i=0;i<10;i++) cout<<Q.DeQue()<<'\t'; cout<<'\n'; } //LinQueue.h #include<iostream> #include<assert.h> using namespace std;

template<typename T>class Queue; template<typename T>class Node{ T info; Node<T> *link; public: Node(T data=0,Node *l=NULL); friend class Queue<T>; }; template<typename T> Node<T>::Node(T data,Node *l){ info=data; link=l; } template<typename T>class Queue{ Node<T> *front,*rear; public: Queue(){rear=front=NULL;} ~Queue(); bool IsEmpty(){ return front==NULL;} void EnQue(const T &data); T DeQue(); T GetFront(); void MakeEmpty(); }; template<typename T>void Queue<T>::MakeEmpty(){ Node<T> *temp; while(front!=NULL){ temp=front;front=front->link;delete temp; } } template<typename T>Queue<T>::~Queue(){MakeEmpty();}

template<typename T>void Queue<T>::EnQue(const T &data){ if(front==NULL) front=rear=new Node<T>(data,NULL); else rear=rear->link=new Node<T>(data,NULL); } template<typename T>T Queue<T>::DeQue(){ assert(!IsEmpty()); Node<T> *temp=front; T data=temp->info; front=front->link; delete temp; return data; } template<typename T>T Queue<T>::GetFront(){ assert(!IsEmpty()); return front->info; } //LinStack.h #include<iostream> #include<stdlib.h> using namespace std;

template<typename T>class LinStack; template<typename T>class StackNode{ StackNode<T> *next; public: T data; StackNode(const T &item,StackNode<T> *perNext=NULL); ~StackNode(){}; friend class LinStack<T>; }; template<typename T>StackNode<T>::StackNode(const T &item,StackNode<T> *perNext=NULL){ data=item; next=perNext; } template<typename T>class LinStack{ StackNode<T> *top; int size; public: LinStack(); ~LinStack(); void MakeEmpty(); void Push(const T &item); T pop(); T GetTop(){ if(size==0){ cerr<<"堆栈已空!"<<endl; exit(1); } return top->data; } int Empty(){ return size<=0;} void print(){ while(top!=NULL){cout<<top->data<<'\t';top=top->next;}} }; template<typename T>LinStack<T>::LinStack(){ top=NULL; size=0; } template<typename T>LinStack<T>::~LinStack(){ MakeEmpty(); } template<typename T>void LinStack<T>::MakeEmpty(){ StackNode<T> *temp; while(top!=NULL){ temp=top; top=top->next; delete temp; } } template<typename T>void LinStack<T>::Push(const T &item){ StackNode<T> *newNode; newNode=new StackNode<T>(item,top); top=newNode; size++; } template<typename T>T LinStack<T>::pop(){ if(size==0){ cerr<<"堆栈已空!"<<endl; exit(1); } StackNode<T> *temp; temp=top; T data=temp->data; top=temp->next; delete temp; size--; return data; }


c++/C + 汇编 = 天下无敌
2005-04-14 23:36
快速回复:[求助]一个关于队和栈的问题
数据加载中...
 
   



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

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