本文目錄一覽:
- 1、C語言編程實現順序棧的初始化,入棧,出棧,取棧頂元素,顯示操作
- 2、C語言中如何初始化棧 每個元素均為空
- 3、C語言順序棧的問題
- 4、求用C語言編寫一個程序實現順序棧初始化,出棧,入棧,判棧空,判棧滿,急需,謝謝
- 5、關於C語言的順序棧的操作
C語言編程實現順序棧的初始化,入棧,出棧,取棧頂元素,顯示操作
#define STACKSIZE 100
int mstack[STACKSIZE],top,bottom;
void mInitStack() { top=bottom=0; }
void mPush(int x) { if ( top-bottom=STACKSIZE ) { mstack[top]=x; top++; } }
int mPop() { int r=0; if ( topbottom ) { r=mstack[top]; top–; } return r; }
void mShowStack() { int i; printf(“[“); for ( i=bottom;itop;i++ ) printf(“%d “,mstack[i]); printf(“]\n”); }
void main()
{
int i,n,x,loop=1,s;
char buffer[80];
mInitStack();
scanf(“%d”,n); for ( i=0;in;i++ ) { scanf(“%d”,x); mPush(x); }
mShowStack();
while ( loop )
{ buffer[1]=0; gets(buffer); s=1;
switch ( buffer[1] )
{ case ‘O’:
case ‘o’: x=mPop(); break;
case ‘U’:
case ‘u’: x=atoi(buffer+5); mPush(x); break;
case ‘n’:
case ‘N’: loop=0; break;
default: s=0; break;
}
mShowStack();
}
mShowStack();
}
C語言中如何初始化棧 每個元素均為空
1如果順序棧的定義如下
typedef struct
{datatype data[stacksize];
int top;
}SeqStack;
—則置空棧的操作如下
void InitStack(seqstack *s)
{s-top=-1;
}
2如果鏈棧的定義如下
typedef struct node
{datatype data;
struct node *next;
}LinkStack;
—則置空棧的操作如下
void InitStack(linkstack *s)
{s-top=null;
}
C語言順序棧的問題
for(i = s-top; i=0; i–) { //遍歷棧
printf(“%d-“,s-data);
}
這裡data你定義的是數組名所以
printf(”%d-“,s-data[i]);
求採納,求經驗,求懸賞
希望能解決您的問題。
求用C語言編寫一個程序實現順序棧初始化,出棧,入棧,判棧空,判棧滿,急需,謝謝
#define STACK_SIZE 100
#define PUSH_POP_SUCCESS 1
#define PUSH_POP_ERROR 0
struct _stackbuf {
int _collection[STACK_SIZE];
int _top;
};
typedef struct _stackbuf S_STACK;
typedef unsigned int u_int_f;
// 入棧
u_int_f push(S_STACK *stack, int d){
if (stack-_top = STACK_SIZE) return PUSH_POP_ERROR;
stack-_collection[stack-_top++] = d;
return PUSH_POP_SUCCESS;
}
// 出棧
u_int_f pop(S_STACK *stack, int *e){
if (!stack-_top) return PUSH_POP_ERROR;
*e=stack-_collection[–(stack-_top)];
return PUSH_POP_SUCCESS;
}
int main(){
S_STACK stack = { {0},0 };
push(stack, 1);
push(stack, 2);
push(stack, 3);
int gv = 0;
pop(stack, gv);
printf(“%d\n”, gv);
system(“PAUSE”);
return 0;
}
關於C語言的順序棧的操作
這是我以前寫的,今天不想砍代碼,就發這個了
#includestdio.h
#includestdlib.h
#define N 100
//棧的結構定義
typedef struct
{
int elem[N];
int top;//棧頂
}Stack;
//循環隊列的結構定義
typedef struct
{
int elem[N];
int front;
int rear;
}Queue;
int Greatstack(Stack*);
int GreatQueue(Queue *);
int pop(Stack *s);
void show(Stack *s);
int push(Stack *s);
int popStack(Stack *s);
int enQueue(Queue *q);
int deQueue(Queue *q);
int printQueue(Queue *q);
void conversion();
void main()
{
char exit=’N’;
int ch;
int result,data;
int m,e;
Stack s;
Queue q;
s.top=0;//棧頂指向當前棧頂的下一位置
q.front=q.rear=0;
do
{
system(“CLS”);
printf(“\t\t********************************************\n”);
printf(“\t\t* 1.創建一個順序棧 ……………..(1) *\n”);
printf(“\t\t* 2.出棧………………………..(2) *\n”);
printf(“\t\t* 3.入棧………………………..(3) *\n”);
printf(“\t\t* 4.順序棧中元素依次出棧,並顯示…..(4) *\n”);
printf(“\t\t* 5.創建一個循環隊列……………..(5) *\n”);
printf(“\t\t* 6.進隊………………………..(6) *\n”);
printf(“\t\t* 7.出隊………………………..(7) *\n”);
printf(“\t\t* 8.循環隊列中元素依次出隊,並顯示…(8) *\n”);
printf(“\t\t* 9.十進制數轉換為其它進制數………(9) *\n”);
printf(“\t\t* 10.退出 …………..(10) *\n”);
printf(“\t\t********************************************\n”);
printf(“\n請選擇操作代碼:”);
scanf(“%d”,ch);
switch(ch)
{
case 1:
printf(“創建一個順序棧\n”);
result=Greatstack(s);
if(result==0)printf(“順序棧創建失敗,棧已滿!\n”);
else printf(“順序棧創建成功!\n”);
system(“pause”);
break;
case 2:
printf(“出棧:\n”);
m=pop(s);
if(m==0)printf(“出棧失敗,棧已空!\n”);
else
{
printf(“順序棧出棧成功!\n”);
printf(“該棧剩餘元素為:”);
show(s);
}
//請加入出棧操作的代碼或函數調用
system(“pause”);
break;
case 3:
printf(“進棧:\n”);
printf(“請輸入入棧的元素”);
scanf(“%d”,e);
result=push(s,e);
if(result==0)printf(“棧已滿!\n”);
else
{
printf(“順序棧入棧成功!\n”);
printf(“該棧剩餘元素為:”);
show(s);
}
//請加入進棧操作的代碼或函數調用
system(“pause”);
break;
case 4:
printf(“順序棧中元素依次出棧,出棧序列為:\n”);
popStack(s);
//請加入依次出棧並顯示元素操作的代碼或函數調用
system(“pause”);
break;
case 5:
printf(“創建一個循環隊列\n”);
result=GreatQueue(q);
if(result==0)printf(“循環隊列創建失敗,循環隊列已滿!\n”);
else printf(“循環隊列創建成功!\n”);
system(“pause”);
break;
case 6:
printf(“入隊:\n”);
data=enQueue(q);
if(result=0) printf(“隊已經滿了\n”);
else printf(“入隊成功\n”);
//請加入入隊操作的代碼或函數調用
system(“pause”);
break;
case 7:
printf(“出隊:\n”);
data=deQueue(q);
if(data=0) printf(“隊已經空了\n”);
else printf(“出隊成功\n”);
//請加入依次出隊操作的代碼或函數調用
system(“pause”);
break;
case 8:
printf(“循環隊列中元素依次出隊,出隊序列為:\n”);
//請加入依次出隊並顯示元素操作的代碼或函數調用
data=printQueue(q);
system(“pause”);
break;
case 9:
printf(“十進制數轉換為其它進制數:\n”);
conversion();
//請加入十進制數轉換為其它進制數操作的代碼或函數調用
system(“pause”);
break;
case 10:
getchar();
printf(“\n您是否真的要退出程序(Y/N):”);
exit=getchar();getchar();
break;
default:
printf(“\n無效輸入,請重新選擇…:”);
}
}while(exit!=’y’exit!=’Y’);
}
/*從鍵盤輸入一系列整數,當輸入值為0時,停止輸入,產生順序棧*/
/*返回0表示生成成功,1表示失敗*/
int Greatstack(Stack *s)
{
int e;
s-top=0;//棧頂指向當前棧頂的下一位置
printf(“請依次輸入需要入棧的元素,以0表示輸入結束:”);
do
{
scanf(“%d”,e);
if(e!=0)
{ if(s-top=N)return 0;//棧滿
s-elem[s-top++]=e;
}
}while(e!=0);
}
/*從鍵盤輸入一系列整數,當輸入值為0時,停止輸入,產生循環隊列*/
/*返回0表示生成成功,1表示失敗*/
int GreatQueue(Queue *q)
{
int e;
q-front=q-rear=0;//初始化隊列
printf(“請依次輸入需要入棧的元素,以0表示輸入結束:”);
do
{
scanf(“%d”,e);
if(e!=0)
{ if((q-rear+1)%N==q-front)return 0;//隊滿
q-elem[q-rear]=e;
q-rear=(q-rear+1)%N;
}
}while(e!=0);
return 1;
}
int pop(Stack *s) //出棧
{
if(s-top==0)
return 0;
–s-top;
}
void show(Stack *s) //顯示棧中的元素
{
int i=s-top;
while(i!=0)
{
–i;
printf(“%d “,s-elem[i]);
}
}
int push(Stack *s,int e) //入棧
{
if(s-top=N)return 0;
s-elem[s-top++]=e;
}
int popStack(Stack *s) //順序棧中元素依次出棧,並顯示
{
while(s-top!=0)
{
–s-top;
printf(“%3d”,s-elem[s-top]);
}
return 0;
}
int enQueue(Queue *q) //入隊
{
int e;
printf(“請輸入入棧的元素:”);
scanf(“%d”,e);
if((q-rear+1)%N == q-front) return 0;
q-elem[q-rear]=e;
q-rear=(q-rear+1)%N;
return 1;
}
int deQueue(Queue *q) //出隊
{
int *e;
if(q-front == q-rear) return 0;
e =q-elem[q-front];
q-front=(q-front+1)%N;
return 1;
}
int printQueue(Queue *q) //循環隊列中元素依次出隊,並顯示
{
if(q-front == q-rear) return 0;
for(;q-front!=q-rear;)
{
printf(“%3d”,q-elem[q-front]);
q-front++;
}
}
void conversion() //十進制數轉換為其它進制數
{
Stack p1;
int n,m;
puts(“請輸入需要轉換的元素:”);
scanf(“%d”,n);
puts(“請輸入需要轉換的進制:”);
scanf(“%d”,m);
p1.top=0;
while(n)
{
push(p1,n%m);
n=n/m;
}
popStack(p1);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/159540.html