鏈棧的回文函數(shù)c語言程序 用棧實現(xiàn)回文數(shù)

用鏈棧和鏈隊判斷回文數(shù)

#include string.h

成都創(chuàng)新互聯(lián)公司成立于2013年,先為榆樹等服務(wù)建站,榆樹等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為榆樹企業(yè)網(wǎng)站制作PC+手機+微官網(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();

}

C語言 數(shù)據(jù)結(jié)構(gòu) , 用鏈式隊列和鏈式棧 判斷一個字符串是否為回文

#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??{?//?隊列

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)?{?//入隊列

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)?//?隊列為空

Q-front?=?Q-rear?=?p;

else?{

Q-rear-next?=?p;

Q-rear?=?p;

}

return?1;

}

int?QueueDelete(LinkQueue?Q,ElemType?*d)?{?//出隊列(刪除)

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("隊列已空無數(shù)據(jù)出隊列!\n");

return?0;

}

typedef?struct?sqstack?{?//順序棧(進制)

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;??

}

求編程高手用c語言編寫鏈棧完整源代碼

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

實現(xiàn)鏈棧各種基本運算的算法 *

編寫程序?qū)崿F(xiàn)鏈棧種基本運算,并在此基礎(chǔ)上設(shè)計一個主程序完成如下功能:

1、 初始化棧

2、 判斷棧是否為空

3、 依次進棧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;//當前分配的空間

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; //當棧為空時,返回錯誤

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("依次進棧元素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;

}

可以正確運行,你看下可以不??希望能幫到樓主! 我用visual C++6.0編譯的,現(xiàn)在主流都是用這個,不好意思,WINTC我沒有用過,樓主可以自己改嗎??

額,你們老師太不人道了,WINTC好像在后面得加一個getch()吧??這個軟件我沒有用過

當前文章:鏈棧的回文函數(shù)c語言程序 用棧實現(xiàn)回文數(shù)
網(wǎng)站路徑:http://muchs.cn/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è)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站