대열 초보

아 하 레이 알고리즘
/ * 필요:
먼저 첫 번 째 수 를 삭제 하고, 이어서 두 번 째 수 를 이 열의 끝 에 놓 고, 세 번 째 수 를 삭제 하고 네 번 째 수 를 이 열의 끝 에 놓 고, 다섯 번 째 수 를 삭제 합 니 다.
마지막 숫자 가 남 을 때 까지 마지막 숫자 도 삭제 합 니 다.방금 삭제 한 순서대로 삭제 한 수 를 연결 하면 샤 오 하의 QQ 입 니 다.
이제 네가 샤 오 쿰 을 좀 도 와 줘.샤 오 하 가 샤 오 흥 에 게 암호 화한 일련 수 는 '6, 3, 1, 75, 8, 9, 24' 다. 
분석: 
팀 의 첫 번 째 숫자 를 삭제 하 는 동작 은 head + 입 니 다.
팀 끝 에 하나의 수 를 추가 합 니 다 (이 수 는 x 라 고 가정 합 니 다). 작업 은 q [tail] = x 입 니 다.tail++;
*/
#include<stdio.h>

int main(){
	int q[101]={0,6,3,1,7,5,8,9,2,4},head,tail;
	//     ,0     
	head=1;
	tail=10; //tail            ,                  ,   head=tail ,     
    while(head<tail){
		printf("%d ",q[head]);
		head++;
		q[tail]=q[head];//    tail   
		tail++;
		head++; 
	}
	getchar();
	return 0; 
} 

/ / 대열 은 우리 가 앞으로 공부 할 것 이다.
범위 우선 검색 및 대기 열 최적화 Bellman - ford 최 단 로 알고리즘 의 핵심 데이터 구조
그래서 현재 대기 열의 세 가지 기본 요소 (하나의 배열, 두 변수) 를 하나의 구조 체 형식 으로 봉 합 니 다. 다음 과 같 습 니 다.
struct queue
{
    int data [100]; / / 대기 열의 주체 로 내용 을 저장 합 니 다.
    int head; / / 팀 의 우두머리
    int tail; / / 팀 끝
}; 
위 에서 우 리 는 구조 체 유형 을 정 의 했 는데, 우 리 는 보통 그것 을 main 함수 의 밖 에 두 었 다.
구조 체 의 정의 끝 에 있 음 을 주의 하 십시오.번호struct 는 구조 체 의 키워드 이 고 quue 는 우리 가 이 구조 체 를 위해 지은 이름 이다.
당신 은 이렇게 이해 할 수 있 습 니 다. 우 리 는 새로운 데이터 형식 을 정 의 했 습 니 다. 이 새로운 유형 은 매우 강력 합 니 다.
이 새로운 형식 으로 정 의 된 모든 변 수 는 하나의 정형 배열 과 두 개의 정 수 를 동시에 저장 할 수 있다.
struct quue 는 전체적으로 사용 해 야 합 니 다.
struct queue 는 전체적으로 사용 해 야 합 니 다. queue q 를 직접 쓸 수 없습니다.이렇게 해서 우 리 는 구조 체 변수 q 를 정의 했다.이 구조 체 변수 q 는 대기 열의 모든 조작 을 만족 시 킬 수 있 습 니 다.그러면 구조 체 변수의 내부 구성원 을 어떻게 방문 해 야 합 니까?사용 할 수 있 습 니 다. 번 호 는 구성원 연산 자 나 점 연산 자 라 고 합 니 다. 다음 과 같 습 니 다.
q.head=1;
q.tail=1;
scanf("%d",&q.data[q.tail]);
       
  자, 다음 코드 는 구조 체 를 사용 하여 이 루어 진 대기 열 작업 입 니 다.
#include <stdio.h>
struct queue
{
    int data[100];//     ,      
    int head;//  
    int tail;//  
};
                                           
int main()
{
    struct queue q;
    int i;
    //     
    q.head=1;
    q.tail=1;
    for(i=1;i<=9;i++)
    {
        //       9  
        scanf("%d",&q.data[q.tail]);
        q.tail++;
    }
                                             
    while(q.head<q.tail) //             
    {
        //          
        printf("%d ",q.data[q.head]);
        q.head++;
                                                  
        //            
        q.data[q.tail]=q.data[q.head];
        q.tail++;
        //      
        q.head++;
    }
                                             
    getchar();getchar();
    return 0;
}

좋은 웹페이지 즐겨찾기