데이터 구조: 순서 스 택 과 체인 스 택 (C 언어)

32353 단어 데이터 구조
코드 는 창고 의 삭제 와 검사 의 기본 조작 을 실현 하 였 다.
순서 창고
#include
#define MAXSIZE 8
typedef int XX;

typedef struct{
	XX *top;
	XX *base;
	int letter;
}stack;

//   
void makenew(stack &L){
	L.letter = MAXSIZE;
	L.base = new XX[MAXSIZE];
	L.top = L.base;
}

//  ,      
void setdata(stack &L,XX data){
	if(L.top-L.base==L.letter){
		printf("     。");
		return ;
	}
	*L.top=data;
	*L.top++;
}

//  
XX gettop(stack &L){
	if(L.base==L.top){
		printf("    。");
		return 0;
	}
	XX w;
	w=*(--L.top);
	return w;
}

//     
XX appeartop(stack &L){
	if(L.base==L.top){
		printf("    ");
		return 0;
	}
	return *(L.top-1);
}

//      
void appear(stack L){
	printf("     :
\t"
); XX *node; node=L.base; while(node!=L.top){ printf("%d\t",*node); *node++; } printf("
"
); } void main(){ int ruler,ii; //ruler ,ii 。 XX data; // XX atop,top; // stack L; makenew(L); printf("
"
); scanf("%d",&ruler); printf(" :
"
); for(int i=0;i<ruler;i++){ scanf("%d",&data); setdata(L,data); } appear(L); printf("----------------------------------------------

"
); printf("1 \t2 \t3 \t4 , \t
"
); scanf("%d",&ii); printf("----------------------------------------------

"
); while(ii){ if(ii==1){ printf(" :
"
); scanf("%d",&data); setdata(L,data); } else if(ii==2){ top=gettop(L); printf(" %d
"
,top); } else if(ii==3){ atop=appeartop(L); printf(" %d
"
,atop); } else if(ii==4) appear(L); else break; printf("----------------------------------------------

"
); printf(" :
"
); scanf("%d",&ii); } }

사슬 창고
#include
#include
typedef int XX;

typedef struct Lnode{
	XX data;
	struct Lnode *next;
}Lnode,*linkLnode;

//  
void settop(linkLnode &L,XX data){
	Lnode *e;
	e=(Lnode *)malloc(sizeof(Lnode));
	e->next = L->next;
	L->next=e;
	e->data=data;
}

//  
XX gettop(linkLnode &L){
	XX w;
	Lnode *p;
	if(L->next==NULL){
		printf("    ,   ");
		return 0;}
	p=L->next;
	w=p->data;
	L->next=L->next->next;
	free(p);
	return w;
}


//     
XX havetop(linkLnode L){
	if(L->next==NULL){ 
		printf("       。
"
); return 0; } return L->next->data; } // void appear(linkLnode L){ if(L->next==NULL){ printf("
"
); return;} Lnode w; w = *L->next; printf(" :
\t"
); while(w.next!=NULL){ printf("%d\t",w.data); w=*w.next; } printf("%d
"
,w.data); } void main(){ int ruler; XX data; linkLnode L; L=(Lnode *)malloc(sizeof(Lnode)); L->next=NULL; printf("*****************************************
"
); printf(" :
"
); scanf("%d",&ruler); printf("
"
); for(int i=0;i<ruler;i++){ scanf("%d",&data); settop(L,data); } printf(" ,"); appear(L); printf("
----------------------------------------"
); int ii; printf("
1 \t2 \t3 \t4

"
); printf(" :
"
); scanf("%d",&ii); while(ii){ if(ii==1){ printf(" :
"
); scanf("%d",&data); settop(L,data); } else if(ii==2){ XX hh=gettop(L); printf(" :%d
"
,hh); } else if(ii==3){ XX hhh=havetop(L); printf(" :%d
"
,hhh); } else if(ii==4) appear(L); else break; printf("----------------------------------------
"
); printf(" :
"
); scanf("%d",&ii); } }

좋은 웹페이지 즐겨찾기