栈的应用,队列的应用(用C语言编写程序)

1任意输入一个字符串,再将其逆序输出,要运用到数据结构中的(栈)!!2利用(队列)!!的操作特点,借助进队与出队操作完成打印二项式系数的任务111211331146411... 1任意输入一个字符串,再将其逆序输出,要运用到数据结构中的(栈)!!

2利用(队列)!!的操作特点,借助进队与出队操作完成打印二项式系数的任务
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
展开
 我来答
匿名用户
2013-10-26
展开全部
//第一个问题
#include <stdio.h>
#include<stdlib.h>
struct stack{
char a;
struct stack *last;
}*top,*head,*p;
void SetStack(){
top=(stack*)malloc(sizeof(stack));
top->last=NULL;
head=NULL;
}
bool StackIsNull(){
return head==NULL;
}
void push(char x){
if(StackIsNull()){
top->a=x;
head=top;
return;
}
p=(stack*)malloc(sizeof(stack));
p->a=x;
p->last=head;
head=p;
}
char pop(){
char x=head->a;
p=head;
head=head->last;
free(p);
return x;
}
void main(){
SetStack();
char c;
while((c=getchar())!='\n'&&c!=' ') push(c);
while(!StackIsNull()) printf("%c",pop());
printf("\n");
}
//第二个
#include<stdio.h>
#include<stdlib.h>
struct queue{
int a;
struct queue *next;
}*top,*head,*p;
void SetQueue(){
top=NULL;
}
bool QueueIsNull(){
return top==NULL;
}
void In(int x){
if(QueueIsNull()){
top=(queue*)malloc(sizeof(queue));
top->a=x;
top->next=NULL;
head=top;
return;
}
p=(queue*)malloc(sizeof(queue));
p->a=x;
p->next=NULL;
head->next=p;
head=p;
}
int Out(){
p=top;
top=top->next;
int x=p->a;
free(p);
return x;
}
void main(){
SetQueue();
printf("输入要打印的行数\n");
int n;
scanf("%d",&n);
if(n<=0) return;
In(1);
In(1);
for(int j=0;j<n-1;j++) printf(" ");
printf("1 1\n");
for(int i=1;i<n;i++){
for(j=0;j<n-i-1;j++) printf(" ");
int temp=0;
int now=Out();
do{
printf("%d ",temp+now);
In(temp+now);
temp=now;
}while((now=Out())!=1);
printf("%d ",temp+now);
In(temp+now);
In(1);
printf("1 \n");
}
}
xiebangyao1994
2013-10-26
知道答主
回答量:30
采纳率:0%
帮助的人:18.9万
展开全部
第一个直接用栈就行了
第二个注意打印的格式就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾生万卷
2013-10-26 · 工作,生活,学习,交流
吾生万卷
采纳数:2 获赞数:26

向TA提问 私信TA
展开全部
一般的栈就能实现啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式