데이터 구조: 순서 스 택 과 체인 스 택 (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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.