栈的应用,队列的应用(用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 展开
2利用(队列)!!的操作特点,借助进队与出队操作完成打印二项式系数的任务
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 展开
3个回答
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");
}
}
#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");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询