C 언어 데이터 구조 -- 창고

35470 단어 데이터 구조
C 언어 데이터 구조 -- 창고
창고 가 무엇 입 니까?
스 택 은 표 의 한 끝 에서 만 조작 하 는 선형 표 이다.그 삽입 과 삭 제 는 표 의 한 끝 에서 만 진행 할 수 있다.열 린 병 처럼 적재 와 꺼 내 는 것 은 병 입구 에서 만 작 동 할 수 있다.고정 적 으로 변 하지 않 는 한 끝 을 스 택 바닥 이 라 고 부 르 고 삽입, 삭제 하 는 그 끝 을 스 택 지붕 이 라 고 부 릅 니 다. 스 택 은 한 입 으로 조작 하기 때문에 새로 삽 입 된 요 소 는 스 택 꼭대기 에 만 놓 을 수 있 습 니 다. 삭제 할 요 소 는 반드시 스 택 꼭대기 의 요소 입 니 다. 즉, 마지막 으로 스 택 에 들 어간 요 소 는 반드시 스 택 에서 나 와 야 합 니 다.
스 택 순서 저장 소
#include
#include
#define MAXSIZE 10

typedef struct
{
    int data[MAXSIZE];
    int top;
}SeqStack;

//     
void Init_SeqStack(SeqStack **s)
{
    //       ,          s
    *s=(SeqStack*)malloc(sizeof(SeqStack));
    (*s)->top=-1;
}

//     
int Empty_SeqStack(SeqStack *s)
{
    if(s->top==-1)
        return 1;
    else
        return 0;
}

//   
void Push_Stack(SeqStack *s,int x)
{
    if(s->top==MAXSIZE-1)
        printf("Stack is full!
"
); else { s->top++; s->data[s->top]=x; } } // void Pop_SeqStack(SeqStack *s,int *x) { if(s->top==-1) printf(" !
"
); else { *x=s->data[s->top]; s->top--; } } // void Top_SeqStack(SeqStack *s,int *x) { if(s->top==-1) printf(" !
"
); else { *x=s->data[s->top]; printf(" !
"
); } } // void Output_SeqStack(SeqStack *s) { SeqStack *w; int i; printf(" :"); for(i=s->top;i>=0;i--) printf("%d ",s->data[i]); printf("
"
); } void Menu() { puts("****************"); puts("1. "); puts("2. "); puts("3. "); puts("4. "); puts("5. "); puts("6. "); puts("****************
"
); printf("Your choice is:"); } // int main() { SeqStack *s; int x,e=-1,i; while(e==-1) { Menu(); scanf("%d",&i); puts(""); switch(i) { case 1: Init_SeqStack(&s); printf(" !
"
); break; case 2: printf("%d
"
,Empty_SeqStack(s)); break; case 3: printf(" :"); scanf("%d",&x); Push_Stack(s,x); break; case 4: Output_SeqStack(s); break; case 5: Pop_SeqStack(s,&x); break; case 6: Top_SeqStack(s,&x); printf(" :%d
"
,x); break; case 0: e=0; break; default:printf(" ,
"
); } } return 0; }

스 택 체인 저장 소
#include
#include

/*       ,       */
typedef struct node
{
    int data;
    struct node *next;
}StackNode;

//    
void Init_LinkStack(StackNode **s)
{
    *s=NULL; //         ,        
}

//        
int Empty_LinkStack(StackNode *s)
{
    if(s==NULL)
        return 1;
    else
        return 0;
}

//   
void Push_LinkStack(StackNode **top,int x)
{
    StackNode *p;
    //       ,        p
    p=(StackNode*)malloc(sizeof(StackNode));
    //            
    p->data=x;
    //  p  top,  p        ,p->next NULL;
    //  p       ,p->next        , p      ,p       
    p->next=*top;
    //             top, top        
    *top=p;
    printf("    !
"
); } // void Pop_LinkStack(StackNode **top,int *x) { StackNode *p; if(*top==NULL) printf(" !
"
); else { *x=(*top)->data; p=*top; // printf(" :%d
"
,p->data); *top=(*top)->next; free(p); } } // void Output_LineStack(StackNode *s) { StackNode *w; w=s; printf(" :"); while((w->next)!=NULL) { printf("%d ",w->data); w=w->next; } /* , w , , , w, ,w->next=NULL, , , */ printf("%d",w->data); puts(""); } void Menu() { puts("****************"); puts("1. "); puts("2. "); puts("3. "); puts("4. "); puts("5. "); puts("****************
"
); printf("Your choice is:"); } int main() { StackNode *s; int i,e=-1,x; while(e==-1) { Menu(); scanf("%d",&i); puts(""); switch(i) { case 1: Init_LinkStack(&s); printf(" !
"
); break; case 2: printf("%d
"
,Empty_LinkStack(s)); break; case 3: printf(" :"); scanf("%d",&x); Push_LinkStack(&s,x); break; case 4: Output_LineStack(s); break; case 5: Pop_LinkStack(&s,&x); break; case 0: e=0; break; default:printf(" ,
"
); } } return 0; }

좋은 웹페이지 즐겨찾기