데이터 구조 순서 스 택 의 C 언어 구현 (스 택 에 들 어가 스 택 초기 화, 스 택 나 가기, 스 택 정상 작업) [C 언어 환경 에서 직접 실행 가능]

17327 단어 데이터 구조
C 언어 구현 순서 스 택 (스 택 에 들 어가 스 택 초기 화, 스 택 나 가기, 스 택 정상 작업) | C 언어 데이터 구조 [C 언어 환경 에서 직접 실행 가능] 이 프로그램 은 실행 할 수 있 습 니 다. 간단 하지만 직접 실행 할 수 있 습 니 다.
#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 번 단원 에서 시작 하 는 네 개의 바 이 트 를 가 리 킵 니 다.

좋은 웹페이지 즐겨찾기