當前位置:首頁 » 編程語言 » 棧c語言代碼

棧c語言代碼

發布時間: 2023-01-02 14:10:27

1. c語言關於棧操作

scanf("%s %d",p,&age);
這一句有問題,變數p作為存儲地址的指針,不可以作為左值。除非是在用變數的地址初始化的時候。下面那句p="da"; 也一樣。
棧的介面函數應該加上棧為空和為滿的情況。
你應該吧age去掉,加上指向當前元素的棧指針。也就是棧頂指針。
你的代碼的意思是把name數組,age和鏈接指針作為整體來入棧和出棧,就是說一次進出都是整個的數組,數組傳遞是通過strcpy實現的。

2. C語言,棧的實現~

你寫的太復雜,這個拿去用吧
// Stack node
struct Node
{
int data ;
Node* next ;
Node(int d, Node* p):data(d), next(p){}
};

class Stack
{
public:
Stack():top(NULL){}

void Push(int d)
{
top = new Node(d, top) ;
}

int Pop()
{
Node* temp = top ;
top = top->next ;
return temp->data ;
}

bool Empty()
{
return top == NULL ;
}

private:
Node* top ;
};

3. 數據結構定義一個棧並實現入棧和出棧操作的程序c語言完整版

如下:

#include"stdio.h"
structstackNode{
intdata;
structstackNode*nextPtr;
};
;
typedefLISTSTACK*STACKNODEPTR;
voidpush(STACKNODEPTR*,int);
intpop(STACKNODEPTR*);
intisEmpty(STACKNODEPTR);
voidprintStack(STACKNODEPTR);
voidinstruct();
intmain()
{
intitem;
intchoice;
STACKNODEPTRsPtr=NULL;
instruct();
printf("chooseyourchoice ");
scanf("%d",&choice);
while(choice!=3)
{
switch(choice)
{
case1:
printf("pleaseinputaninteger! ");
scanf("%d",&item);
//printf("%d ",item);
push(&sPtr,item);
printStack(sPtr);
break;
case2:
if(!isEmpty(sPtr))
{
printf("deletingelementoftopstack ");
pop(&sPtr);
printStack(sPtr);
}
else{
printf("noelementinthestack ");
}
break;
default:
printf("invalidinput,checkyourinput! ");
break;
}
printf("pleacechooseyourchoice");
instruct();
scanf("%d",&choice);
}
}
voidinstruct()
{
printf("Followingtheinstructionbelow: "
"1:insertnewelmentintothestack "
"2:deletethetopelementofthestack "
"3:toendofrun ");
}
intisEmpty(STACKNODEPTRsPtr)
{
returnsPtr==NULL;
}
voidprintStack(STACKNODEPTRsPtr)
{
if(sPtr==NULL)
{
printf("Thestackisempty! ");
}
else{
printf("Theelementsofthestack: ");
while(sPtr!=NULL)
{
printf("%d-->",sPtr->data);
sPtr=sPtr->nextPtr;
}
printf("NULL ");
}
}
voidpush(STACKNODEPTR*topPtr,intvalue)
{
STACKNODEPTRnewPtr;
newPtr=malloc(sizeof(STACKNODEPTR));
if(newPtr!=NULL)
{
newPtr->data=value;
newPtr->nextPtr=*topPtr;
*topPtr=newPtr;
}
else
{
printf("%disnotinsertedintostack.Nomemoryisavailiable ");
}
}
intpop(STACKNODEPTR*topPtr)
{
STACKNODEPTRnewPtr;
inttopValue;
newPtr=*topPtr;
*topPtr=(*topPtr)->nextPtr;
free(newPtr);
topValue=(*topPtr)->data;
printf("deleting---%d ",topValue);
returntopValue;
}

4. 數據結構C語言 棧

肯定是你指針指向不對
太長不太想看,只給你指出一處錯誤

scanf("%d,&c1");//通過鍵盤輸入為變數c1賦值

這一句,看到啥錯誤了吧?還有你聲明了char幹嘛又用%d呢,如果用%c的時候注意這樣寫
scanf(" %c",&c1);

5. 棧的基本操作的C語言程序

#include <stdio.h>
#include <stdlib.h>
#define MAX 1024 ///棧使用數組模擬,MAX是最大元素個數
typedef int DataType; ///數據域使用整形

typedef struct _stack
{
DataType data[MAX]; ///存放數據
int top; ///棧頂指針
}stack;

///初始化
int initStack(stack (*s))
{
return emptyStack(s);
}

///數據壓棧,成功返回1,失敗返回0
int push(stack (*s), DataType d)
{
if ((*s).top >= MAX - 1) //棧已滿
{
printf("棧已滿,不能壓棧\n");
return 0;
}

//數據壓棧
(*s).top++;
(*s).data[(*s).top] = d;
return 1;
}

///數據出棧,成功返回1,d指向的區域存儲彈出的數據,失敗返回0
int pop(stack (*s), DataType *d)
{
if ((*s).top <= -1)
{
printf("棧為空,不能出棧\n");
return 0;
}

//出棧
*d = (*s).data[(*s).top];
(*s).top--;
return 1;
}

///清空棧
int emptyStack(stack (*s))
{
(*s).top = -1;
return 1;
}

int main(int argc, char** argv)
{
stack s;
int i, d;

initStack(&s);

//壓棧
for (i = 0; i < 1025; i++)
{
push(&s, i);
}

//清空
emptyStack(&s);

for (i = 0; i < 10; i++)
{
push(&s, i);
}
//出棧
for (i = 0; i < 11; i++)
{
pop(&s, &d);
printf("%d\n", d);
}

return 0;
}

6. 用C語言實現棧的基本操作(數制的轉換)

//順序棧以及基本操作如下:

#include<iostream.h>
enum
{
MAX_SIZE=20
};

typedef struct
{
int* base;
int* top;
int stacksize;
}SqStack;

void InitStack(SqStack& S)
{
S.base=new int[MAX_SIZE];
S.top=S.base;
S.stacksize=MAX_SIZE;
}

bool Push(SqStack& S,int e)
{
if(S.top-S.base>=S.stacksize)
return false;
*S.top=e;
S.top++;
return true;
}

bool Pop(SqStack& S,int& e)
{
if(S.top==S.base)
return false;
S.top--;
e=*S.top;
return true;
}

void DestroyStack(SqStack& S)
{
if(S.base)
delete S.base;
S.top=S.base=NULL;
S.stacksize=0;
}

bool StackEmpty(SqStack S)
{
return (S.top==S.base);
}

void Print(SqStack S)
{
int i=0;

while(i<S.top-S.base)
{

cout<<S.base[i++]<<endl;
}
}

7. 棧的c語言實現基本操作

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#definestack_init_size20
#defineincreasesize10;
typedefintElemType;
typedefstructnode{
ElemType*base;
ElemType*top;
intsize;
}stack;

voidcreat(stack*s)
{
s->base=(ElemType*)malloc(sizeof(ElemType));
if(!s->base)
{
exit(0);
}
s->base=s->top;
s->size=stack_init_size;
}

voidpush(stack*s,ElemTypee)
{
if(s->top-s->base>=s->size)
{
s->base=(ElemType*)realloc(s->base,(s->size+increasesize)*sizeof(ElemType));
if(!s->base)
{
exit(0);
}
s->top=s->base+s->size;
s->size+=increasesize;
}
*(s->top)=e;
s->top++;
}

voidpop(stack*s,ElemType*e)
{
if(s->top==s->base)
{
return;
}
*e=*--(s->top);
}
intstacklen(stacks)
{
return(s.top-s.base);
}
intmain()
{
stacks;
intn;
ElemTypee1,e2,d;
inti=1,j=1;
push(&s,i);
push(&s,j);
scanf("%d",&n);
while(n--)
{
pop(&s,&e1);
pop(&s,&e2);
d=e1+e2;
push(&s,e2);
push(&s,d);
}
pop(&s,&d);
printf("%d",d);
return0;
}

8. 棧的操作,用c語言急!

#include<stdio.h>
#include<malloc.h>
#define DataType int
#define MAXSIZE 1024
typedef struct
{
DataType data[MAXSIZE];
int top;
}SeqStack;
SeqStack *Init_SeqStack()//棧初始化
{
SeqStack *s;
s=(SeqStack *)malloc(sizeof(SeqStack));
if(!s)
{
printf("空間不足\n");
return NULL;
}
else
{
s->top=-1;
return s;
}
}
int Empty_SeqStack(SeqStack *s)//判棧空
{
if(s->top==-1)
return 1;
else
return 0;
}
int Push_SeqStack(SeqStack *s,DataType x)//入棧
{
if(s->top==MAXSIZE-1)
return 0;//棧滿不能入棧
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}
int Pop_SeqStack(SeqStack *s,DataType *x)//出棧
{
if(Empty_SeqStack(s))
return 0;//棧空不能出棧
else
{
*x=s->data[s->top];
s->top--;
return 1;
}//棧頂元素存入*x,返回
}
DataType Top_SeqStack(SeqStack *s)//取棧頂元素
{
if(Empty_SeqStack(s))
return 0;//棧空
else
return s->data[s->top];
}
int Print_SeqStack(SeqStack *s)
{
int i;
printf("當前棧中的元素:\n");
for(i=s->top;i>=0;i--)
printf("%3d",s->data[i]);
printf("\n");
return 0;
}
int main()
{
SeqStack *L;
int n,num,m;
int i;
L=Init_SeqStack();
printf("初始化完成\n");
printf("棧空:%d\n",Empty_SeqStack(L));
printf("請輸入入棧元素個數:\n");
scanf("%d",&n);
printf("請輸入要入棧的%d個元素:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&num);
Push_SeqStack(L,num);
}
Print_SeqStack(L);
printf("棧頂元素:%d\n",Top_SeqStack(L));
printf("請輸入要出棧的元素個數(不能超過%d個):\n",n);
scanf("%d",&n);
printf("依次出棧的%d個元素:\n",n);
for(i=0;i<n;i++)
{
Pop_SeqStack(L,&m);
printf("%3d",m);
}
printf("\n");
Print_SeqStack(L);
printf("棧頂元素:%d\n",Top_SeqStack(L));
return 0;
}

9. 在C語言中該怎樣建立棧具體代碼是什麼

1.棧空間(stack段)用來存放函數中的局部變數和函數調用時的上下文。
2.
全局變數和靜態變數存放於進程的數據段。
3.
windows下進程的棧空間會自動增長,一般不會出現空間不足的問題;
4。如果變數實在太大,甚至大於棧可增長的范圍,如數百兆,則會編譯出錯。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:678
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1005
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:251
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:799
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705