(체인 대기 열) 프로 그래 밍 실현 기능: 숫자 를 입력 할 때 데 이 터 를 정렬 하고 알파벳 을 입력 할 때 데 이 터 를 정렬 합 니 다.
21880 단어 데이터 구조
체인 헤더 파일:
// :
#ifndef LINKQUEUE_H
#define LINKQUEUE_H
#include
#include
#include
#ifndef LINKQUEUE_NODE
#define LINKQUEUE_NODE int
#endif
// , int
typedef LINKQUEUE_NODE datatype;
//
struct node
{
datatype data;
struct node *next;
};
//
typedef struct
{
struct node *front;//
struct node *rear;//
int size;//
}linkqueue;
//
static linkqueue *init_queue()
{
linkqueue *q = malloc(sizeof(linkqueue));
if(q != NULL)
{
q->front = NULL;
q->rear = NULL;
q->size = 0;
}
return q;
}
//
static bool empty(linkqueue *q)
{
return q->size == 0;
}
// ( )
static void en_queue(linkqueue *q, datatype data)
{
struct node *new = malloc(sizeof(struct node));
if(new != NULL)
{
new->next = NULL;
new->data = data;
}
if(empty(q))//
{
q->front = new;// new
}
else//
{
q->rear->next = new;// new
}
q->rear = new;// new
q->size++;// +1
}
// ( )
static struct node *out_queue(linkqueue *q)
{
if(empty(q))//
{
return NULL;
}
else if(q->size == 1)//
{
q->rear = NULL;
}
else
{
struct node *p = q->front;//
q->front = q->front->next;// ( )
q->size--;// -1
p->next = NULL;// NULL( )
return p;//
}
}
// ( )
struct node *front(linkqueue *q)
{
if(!empty(q))
{
return NULL;
}
else
{
return q->front;
}
}
//
static int size(linkqueue *q)
{
return q->size;
}
// ( )
static void destroy(linkqueue *q)
{
if(empty(q))
{
return;
}
struct node *p = q->front;// p
while(p!=NULL)
{
struct node *next = p->next;// next p
free(p);// P
p = next;// p next( )
}
q->front = NULL;//( )
q->rear = NULL;
q->size = 0;
}
//
static void travel(linkqueue *q, void (*handler)(datatype data))
{
if(empty(q))
{
return;
}
struct node *p = q->front;// p
while(p != NULL)
{
//
handler(p->data);
// ( )
p = p->next;
}
}
#endif
주 함수:
#include
//#define LINKQUEUE_NODE char
#include "linkqueue.h"
void show(int data)
{
printf("%d\t", data);
}
int main(int argc, char **argv)
{
//
linkqueue *q = init_queue();
printf("
");
//
int n;
while(1)
{
//
if(scanf("%d", &n) == 1)
{
printf(" :");
//
en_queue(q, n);
}
//
else
{
//
while(getchar()!='
');
//
struct node *tmp = out_queue(q);
if(!tmp)
printf("
");
else
printf(" :%d
",tmp->data);
}
travel(q, show);//
}
return 0;
}
내 디 렉 터 리
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.