问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言简单题目,高手解答下

发布网友 发布时间:2024-09-25 18:53

我来回答

3个回答

热心网友 时间:2024-09-28 21:40

//这个是数组实现的,无需用到isEmpty()函数
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int stack[128] = {0};
int length = -1;
void Push(int a)
{
if(length < 127)
{
length ++;
stack[length] = a;
printf("成功,输入的元素是:%d\n",a);
}
else
printf("失败,堆栈已满\n");
}

void Pop()
{
if(length >= 0)
{
printf("成功,取出的元素是:%d\n",stack[length]);
length --;
}
else
printf("失败,堆栈内无元素");
}

void Clear()
{
length = -1;
printf("成功清空堆栈\n");
}

int main()
{
char aChar;
int aInt, status;
status = 1;

do
{
printf("What to do?(p(Pop)/u(pUsh)/c(Clear)/q(Quit)):\n");
scanf("%c", &aChar);
if(aChar == 'u')
{
printf("Please enter a number:");
scanf("%d", &aInt);
printf("此处压栈\n");
Push(aInt);
}
else if(aChar == 'p')
{
printf("此处弹栈\n");
Pop();
}
else if(aChar == 'c')
{
printf("此处清空\n");
Clear();
}
else if(aChar == 'q')
{
printf("退出\n");
break;
}
fflush(stdin);
}while(status);
return 0;
}
//这个是链表实现的
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef struct list
{
int data;
struct list * next;
}*List;
List stack;

void build()
{
stack = (List)malloc(sizeof(list));
stack->data = 0;
stack->next = NULL;
}

bool isEmpty()
{
if(stack->next == NULL)
return true;
else
return false;
}

void Push(int a)
{
if(stack->data < 128)
{
List q,p;
p = (List)malloc(sizeof(list));
p->data = a;
p->next = stack->next;
stack->next = p;
printf("成功,输入的元素是:%d\n",p->data);
}
else
printf("失败,堆栈已满\n");
}

void Pop()
{
if(!isEmpty())
{
List p = stack->next,q;
printf("成功,取出的元素是:%d\n",p->data);
stack->data --;
q = stack;
q->next = p->next;
free(p);
}
else
printf("失败,堆栈内无元素");
}

void Clear()
{
List p,q,r;
p = stack;
if(p->next)
{
while(p->next->next)
{
r = stack;
q = r->next;
r->next = q->next;
free(q);
}
}
p = stack->next;
free(p);
stack->next = NULL;
printf("成功清空堆栈\n");
}

int main()
{
char aChar;
int aInt, status;
status = 1;
build();

do
{
printf("What to do?(p(Pop)/u(pUsh)/c(Clear)/q(Quit)):\n");
scanf("%c", &aChar);
if(aChar == 'u')
{
printf("Please enter a number:");
scanf("%d", &aInt);
printf("此处压栈\n");
Push(aInt);
}
else if(aChar == 'p')
{
printf("此处弹栈\n");
Pop();
}
else if(aChar == 'c')
{
printf("此处清空\n");
Clear();
}
else if(aChar == 'q')
{
printf("退出\n");
break;
}
fflush(stdin);
}while(status);
return 0;
}

热心网友 时间:2024-09-28 21:41

给你一个我写的,你参考一下:

这是一个堆栈的模板类; 你可以将 Type 定义为你需要的任何类型,希望对你有帮助, 如果还有不明白的地方加我
QQ: 1026613980 注明 [编程].

Stack.h

//////////////////////////////////////////////////////////////////////////////////////*/

#include <assert.h>
#include <iomanip.h>
#include <stdlib.h>

template <class Type> class Stack
{
public:
Stack( int size = 10 );
~Stack() { delete []elements; }
void Push( const Type &value );
Type Pop(void);
Type GetTop(void) const;
void MakeEmpty(void) { top = -1; };
bool IsEmpty(void) const { return top == -1; }
bool IsFull(void) const { return top == maxSize - 1; }
void Traverse(void) const;
private:
int top;
Type *elements;
int maxSize;
};

////////////////////////////////////////////////////////////////////////////////////////
//
//
// Implementation of member functions
//
//
////////////////////////////////////////////////////////////////////////////////////////

template <class Type> Stack<Type>::Stack( int size )
{
if ( size < 1 )
{
cerr << "Illegal Stack Size" << endl;
exit(1);
}

maxSize = size;
top = -1;

elements = new Type[maxSize];
assert( NULL != elements );
}

template <class Type> void Stack<Type>::Push( const Type &value )
{
assert( !IsFull() );

elements[++top] = value;
}

template <class Type> Type Stack<Type>::Pop(void)
{
assert( !IsEmpty() );

return elements[top--];
}

template <class Type> Type Stack<Type>::GetTop(void) const
{
assert( !IsEmpty() );

return elements[top];
}

template <class Type> void Stack<Type>::Traverse(void) const
{
assert( !IsEmpty() );

for ( int i = 0; i <= top; i++ )
{
cout << elements[i] << endl;
}
return;
}

热心网友 时间:2024-09-28 21:43

哇,这还简单啊。。。真得要高手才行了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果银行拒贷有哪些办法 小天鹅滚筒洗衣机水位多少合适 阴阳师百闻牌攻略大全 百闻牌式神卡组阵容大全 阴阳师百闻牌三大妖狐阵容推荐 妖狐流派怎么搭配?-新手攻略-安族网... 阴阳师百闻牌妖狐快攻阵容 怎么搭配攻略推荐 阴阳师百闻牌妖狐技能攻略 妖狐属性及卡组搭配推荐-新手攻略-安族网... 阴阳师百闻牌妖狐最强卡组 阵容怎么搭配攻略 阴阳师百闻牌妖狐卡组推荐 怎么搭配攻略分享 带鹏字的公司名字大全 鹏字开头公司起名 叶罗丽娃娃玩具店在哪 新武林外传帝藏带傲视群雄好还是天下无双好? 空气源热泵的压缩机很重要,哪个品牌的压缩机好啊? 产后吃益生菌有助减肥吗?补充哪些益生菌有用? 产后吃益生菌有助减肥吗?有用吗? 武林外传傲世群雄和魔天下无双那个好?我看别人带傲世群雄都是+15... 我租的房子没到期,我想直接不要押金直接走,到时要承担法律责任吗_百 ... 补充哪种益生菌可以减肥?还要配合运动吗? 益生菌减肥是真的吗 蓝莓泡酒的正确做法 租房合同还没有到期但是不想租了 ...一个圆圈,圈中间有个大写的A,请问是什么牌子 蓝筹股是指哪些股票? 蓝筹股指的是哪些股? 交谊舞哪些歌曲 中国联通算蓝筹吗 交谊舞歌曲有哪些 中国联通是不是蓝筹股 交谊舞有哪些歌曲 中国银行企业网银转账时间多久到账? 苹果笔记本怎么恢复和新机一样 该气候类型的特点是( )A.夏季暖热多雨,冬季寒冷干燥B.夏季炎热干燥,冬季... 武林外传 明王带什么首饰好 得糖尿病的一日三餐最好吃什么 ...租了 有几处损坏 不想处理 押金不要了 可以直接走吗 有法律责任吗... 武林外传3万积分拿的傲视群雄和天下无双是魔的吗? 糖尿病人一日三餐怎么吃 331国道和219哪个好,洛扎旅游攻略自驾游 糖尿病人少吃多餐好还是一日三餐好 小米没拆封系统会开发板吗 ...盘,旋,促,这些哪些是前鼻音,哪些是后鼻音,平舌音和三拼音?_百度知 ... 昆明到西藏 非小米手机刷机成miui系统后,能不能用系统自带的系统升级功能进行系统升 ... 小米手机有两个系统。比如一开始我是稳定版的,后来,刷成开发版。那我... 丰田威驰fs有自动挡的吗 这种黑色的虫子是什么虫子啊? 韩国F4 签证上 입국만료일 Final Entry date 指的是什么 韩国F4签证滞留期间(Period of Sojourn ) 打火机的火是多少度 韩国签证F4两年内如果没有去过韩国,就要重办签证吗? 我先后给韩国法务部... 有关韩国f-4签证问题