#include string.h
成都創(chuàng)新互聯(lián)公司成立于2013年,先為榆樹等服務(wù)建站,榆樹等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為榆樹企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
#include stdio.h
#define MAXSIZE 100
typedef struct {
char data[MAXSIZE];
int top;
}seqstack; seqstack *init_seqstack(){
seqstack *s;
s=malloc(sizeof(seqstack));
s-top=-1;
return s;
} void inputstack(seqstack *s,char x){
if(s-top==MAXSIZE-1)
{ printf("The stack is full!");
return;
}
else
{ s-top++;
s-data[s-top]=x;
}
}int outputstack(seqstack *s){
int n;
n=s-top;
for(;s-top=n/2;s-top--){
if( s-data[s-top]!=s-data[n-s-top]) break;
}
if(s-top=n/2)
return 0;
else
return 1;
}
void main()
{ int flag=1,n=0;
char x;
seqstack *s;
s=init_seqstack(); while(flag)
{
scanf("%c",x);
if(x=='#')
{ flag=0; if(outputstack(s))
printf("yes!");
else
printf("no!");
}
if(x!='\n'){
inputstack(s,x);}
} getch();
}
#include?stdio.h
#include?string.h
#include?stdlib.h
const?MaxStackSize?=?50;
typedef?char?ElemType;
typedef?struct?snode?{
ElemType?data;
struct?snode?*next;
}*LinkStack,*psNode;
LinkStack?GetEmptyStack()?{?//?初始化
LinkStack?head?=?(psNode)malloc(sizeof(struct?snode));
if((head)?==?NULL)?{
printf("內(nèi)存空間不足無法插入!\n");
return?NULL;
}
head-data?=?'0';
head-next?=?NULL;
return?head;
}
int?StackNotEmpty(LinkStack?head)?{?//?是否為空
return?(head-next?!=?NULL);
}
int?StackPush(LinkStack?head,ElemType?x)?{?//?入棧
psNode?p?=?(psNode)malloc(sizeof(struct?snode));
if(p?==?NULL)?{
printf("內(nèi)存空間不足無法插入!\n");
return?0;
}
p-data?=?x;
p-next?=?head-next;
head-next?=?p;
return?1;
}
int?StackPop(LinkStack?head,ElemType?*x)?{?//刪除元素(彈出)
psNode?p?=?head-next;
if(StackNotEmpty(head))?{
*x?=?p-data;
head-next?=?p-next;
free(p);
return?1;
}
return?0;
}
typedef?struct?qnode??{?//?隊(duì)列
ElemType?data;
struct?qnode?*next;
}*pqNode;
typedef?struct?queue{
pqNode?front;
pqNode?rear;
}*LinkQueue;
LinkQueue?GetEmptyQueue()?{?//初始化
LinkQueue?Q?=?(struct?queue?*)malloc(sizeof(struct?queue));
if(Q?==?NULL)?{
printf("內(nèi)存空間不足無法插入!\n");
return?NULL;
}
Q-rear?=?NULL;
Q-front?=?NULL;
return?Q;
}
int?QueueNotEmpty(LinkQueue?Q)?{?//是否為空
return?(Q-front?!=?NULL);
}
int?QueueAppend(LinkQueue?Q,ElemType?x)?{?//入隊(duì)列
struct?qnode?*p?=?(struct?qnode?*)malloc(sizeof(struct?qnode));
if(p?==?NULL)?{
printf("內(nèi)存空間不足!\n");
return?0;
}
p-data?=?x;
p-next?=?NULL;
if(Q-front?==?NULL)?//?隊(duì)列為空
Q-front?=?Q-rear?=?p;
else?{
Q-rear-next?=?p;
Q-rear?=?p;
}
return?1;
}
int?QueueDelete(LinkQueue?Q,ElemType?*d)?{?//出隊(duì)列(刪除)
pqNode?p;
if(QueueNotEmpty(Q))?{
*d?=?Q-front-data;
p?=?Q-front;
Q-front?=?p-next;
if(p-next?==?NULL)?Q-rear?=?NULL;
free(p);
return?1;
}
printf("隊(duì)列已空無數(shù)據(jù)出隊(duì)列!\n");
return?0;
}
typedef?struct?sqstack?{?//順序棧(進(jìn)制)
ElemType?stack[MaxStackSize];
int?size;
}SequenceStack;
void?StackInitiate(SequenceStack?*S)?{
S-size?=?0;
}
int?StackNotEmpty(SequenceStack?*S)?{
return?(S-size??0);
}
int?StackPush(SequenceStack?*S,ElemType?x)?{
if(S-size?=?MaxStackSize)?{
printf("堆棧已滿無法插入!\n");
return?0;
}
S-stack[S-size]?=?x;
++S-size;
return?1;
}
int?StackPop(SequenceStack?*S,ElemType?*d)?{
if(S-size?==?0)?{
printf("堆棧已空!\n");
return?0;
}
--S-size;
*d?=?S-stack[S-size];
return?1;
}
int?main()?{?//主函數(shù)在這里
LinkStack?head?=?GetEmptyStack();
LinkQueue?Q?=?GetEmptyQueue();
// SequenceStack?myStack;
char?x,d;
int?i?=?0,flag;
char?str[MaxStackSize];
printf("輸入字符串:");
scanf("%s",str);
while(str[i])?{
StackPush(head,str[i]);
QueueAppend(Q,str[i]);
++i;
}
while(StackPop(head,x)??QueueDelete(Q,d)??flag)
flag?=?(x?==?d);
if(flag)?printf("是回文!\n");
else?printf("不是回文!\n");
return?0;??
}
/****************************************************************************************
實(shí)現(xiàn)鏈棧各種基本運(yùn)算的算法 *
編寫程序?qū)崿F(xiàn)鏈棧種基本運(yùn)算,并在此基礎(chǔ)上設(shè)計(jì)一個(gè)主程序完成如下功能:
1、 初始化棧
2、 判斷棧是否為空
3、 依次進(jìn)棧a,b,c,d,e元素。
4、 判斷棧是否為空
5、 輸出棧的長度
6、 輸出從棧頂?shù)綏5自?/p>
7、 輸出出棧序列
8、 判斷棧是否為空
9、 釋放棧/
*********************************************************************************************/
#includeiostream.h
#includestdlib.h
#includestdio.h
#define OVERFLOW -2
#define ok 1
#define STACK_INIT_SIZE 100 //存儲空間初始分配量
#define STACKCREMENT 10 //增加分量
typedef struct{
char *base;
char *top;
int stacksize;//當(dāng)前分配的空間
int lenght;
}SqStack; //Sqlist
/*********************************初始化棧*************************************/
int InitStack(SqStack S)
{
S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));// 分配存儲空間
if(!S.base) exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
S.lenght=0;
return 1;
}
/******************************************************************************/
/********************************判斷棧是否為空******************************/
bool StackEmpty(SqStackS){
if(S.top==S.base)return 1;
else
return 0;
}
/*****************************釋放棧********************************/
int FreeStack(SqStackS)
{
free(S.base);
S.top=S.base;
return ok;
}
/******************************************************************/
/*********************求出棧的長度*********************************/
int StackLenth(SqStackS){
S.lenght=S.top-S.base;
return S.lenght;
}
/******************************************************************/
/**********************入棧*****************************************/
int Push(SqStack S,char e){
if(S.lenght=S.stacksize){
S.base=(char*)realloc(S.base,(S.stacksize+STACKCREMENT)*sizeof(char));//增加分配存儲
if(!S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKCREMENT;
}
*S.top++=e;
S.lenght++;
return ok;
}
/**************************************************************/
/****************************出棧****************************/
char Pop(SqStackS,char e){
if(S.base==S.top)
return 0; //當(dāng)棧為空時(shí),返回錯(cuò)誤
else
e=*--S.top;
S.lenght--;
return e;
}
/*************************顯示*******************************/
void DispStack(SqStack S)
{
int i;
for(i=S.lenght;i0;i--)
{
printf("%c",*(--S.top));
}
printf("\n");
}
//*******************主函數(shù)************************************/
int main(){
int i;
SqStack Lst;
char a,b,c,d,e,f;
char g;
printf("初始化棧:\n");
InitStack(Lst);
printf("依次進(jìn)棧元素a,b,c,d,e,f\n");
cinabcdef;
Push(Lst,a);
Push(Lst,b);
Push(Lst,c);
Push(Lst,d);
Push(Lst,e);
Push(Lst,f);
printf("打印\n");
DispStack(Lst);
int l=StackLenth(Lst);
cout"棧的長度為"lendl;
printf("出棧序列:");
for(i=1;i=6;i++)
{
Pop(Lst,g);
printf("%c ",g);
}
printf("\n");
printf("棧為:%s\n",(StackEmpty(Lst)?"空":"非空"));
printf("釋放棧\n");
FreeStack(Lst);
return 0;
}
可以正確運(yùn)行,你看下可以不??希望能幫到樓主! 我用visual C++6.0編譯的,現(xiàn)在主流都是用這個(gè),不好意思,WINTC我沒有用過,樓主可以自己改嗎??
額,你們老師太不人道了,WINTC好像在后面得加一個(gè)getch()吧??這個(gè)軟件我沒有用過
當(dāng)前文章:鏈棧的回文函數(shù)c語言程序 用棧實(shí)現(xiàn)回文數(shù)
網(wǎng)站路徑:http://jinyejixie.com/article0/dosccoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站排名、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)