데이터 구조 순서 스 택 의 C 언어 구현 (스 택 에 들 어가 스 택 초기 화, 스 택 나 가기, 스 택 정상 작업) [C 언어 환경 에서 직접 실행 가능]
17327 단어 데이터 구조
#include
#include
#include
#define Maxsize 10//
typedef int Elemtype;
typedef struct {
Elemtype data[Maxsize];
int top;
}Sqstack;
void Initstack();
void Push();
void Pop();
void Gettop();
void Pushtostack();
void Popfromstack();
int main()
{
Sqstack h;
Sqstack * s;
int choice;
s=&h;
Initstack(s);
while(1){
printf("********1. 2. *********
");
printf("********3. 4. *********
");
printf(" :
");
scanf("%d",&choice);
switch(choice)
{
case 1:Pushtostack(s);break;
case 2:Popfromstack(s);break;
case 3:Gettop(s);break;
case 4:exit(0);break;
default:printf(" !!!
");
}
}
return 0;
}
void Initstack(Sqstack *S){
S->top=-1;
}//
void Push(Sqstack *S,Elemtype x){//
if(S->top==Maxsize)
printf(" , !
");
else{(S->top)++;
S->data[S->top] = x ;
printf(" (%d) !
",x);}
}
void Pop(Sqstack *S){//
Elemtype *x;
if(S->top==-1)
printf(" ,
");
else{x=&(S->data[S->top]);
S->top = S->top - 1;
printf("%d !
",*x);
}
}
void Gettop(Sqstack *S){//
Elemtype *x;
if(S->top<=-1)
printf(" !
");
else{
x=&(S->data[S->top]);
printf(" %d
",*x);
}
}
void Pushtostack(Sqstack *s){//
int n;
Elemtype e;
printf(" ( 1):
");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf(" %d :
",i+1);
scanf("%d",&e);
Push(s,e);
}
}
void Popfromstack(Sqstack *s){//
int n;
printf(" ( 1):
");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
Pop(s);
}
}
문제 가 발생 했 습 니 다. 포인터 가 경 계 를 넘 고 포인터 의 덧셈 이 나타 내 는 내용, 문 제 를 초기 화 합 니 다.지침 은 정 수 를 더 하거나 빼 도 된다.지침 의 이런 연산 의 의 미 는 일반적인 수치의 가감 연산 의 의미 와 다르다.예: 예: 1. char a [20]; 2、int *ptr = a; … … 3、ptr++;
위의 예 에서 포인터 ptr 의 유형 은 int * 이 고 가리 키 는 유형 은 int 이 며 가리 키 는 성형 변수 a 로 초기 화 되 었 습 니 다.다음 세 번 째 문장 에서 포인터 ptr 는 1 을 추 가 했 습 니 다. 컴 파 일 러 는 이렇게 처 리 했 습 니 다. 포인터 ptr 의 값 에 size of (int) 를 더 했 고 32 비트 프로그램 에 4 를 더 했 습 니 다.주 소 는 바이트 단위 이기 때문에 ptr 가 가리 키 는 주 소 는 원래 변수 a 의 주소 에서 높 은 주소 방향 으로 4 개의 바이트 가 증가 합 니 다.char 형식의 길 이 는 하나의 바이트 이기 때문에 원래 ptr 는 배열 a 의 0 번 단원 에서 시작 하 는 네 개의 바이트 입 니 다. 이때 배열 a 에서 4 번 단원 에서 시작 하 는 네 개의 바 이 트 를 가 리 킵 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.