본문 바로가기
반응형

프로그래머의 길/알고리즘22

원형 큐 구현 소스 #include #define MAX 10 int queue[MAX]; int front, rear; void init_queue(void) { front = rear = 0; } void clear_queue(void) { front = rear; } int put(int k) { if((rear+1)%MAX == front) { printf("\n Queue overflow."); return -1; } queue[rear] = k; rear = ++rear%MAX; return k; } int get(void) { int i; if(front == rear) { printf("\n Queue underflow."); return -1; } i=queue[front]; front = ++front%M.. 2007. 3. 29.
스택 예제 소스 숫자 저장 스택 #include #define MAX 10 int stack[MAX]; int top; void init_stack(void) { top = -1; } int push(int t) { if (top >= MAX-1) { printf("\n Stack overflow."); return -1; } stack[++top] = t; return t; } int pop(void) { if(top Bottom\n"); for(i=top; i>.. 2007. 3. 29.
스택과 큐, 데크 스택과 큐, 데크    3.1 스택(Stack)   • 삽입과 삭제가 한쪽 끝에서만 발생하는 선형 리스트   • top(stack pointer) 포인터 : 자료의 삽입과 삭제가 발행하는 부분       → top 포인터는 항상 제일 위에 있는 자료를 가리킴   • BOTTOM(밑바닥) 포인터 : 막혀있는 다른 한쪽 끝    • PUSH :자료를 삽입하는 연산, POP : 자료를 삭제하는 연산,          TOP 연산 : 현재top 포인터가 가리키는 자료의 내용을 조사하는 연산   • 자료의 삽입: top 포인터가 가리키는 위치보다 1이 증가한 위치에              →  top = top + 1   • 자료의 삭제: top 포인터가 가리키는 위치의 자료가              →    t.. 2007. 3. 29.
이중 연결 리스트로 구현한 텍스트 뷰어 #include #include #include #include #include #define PGUP 0x4800 #define PGDN 0x5000 #define ESC 27 #define PAGESIZE 25 // 한 페이지에 보여질 줄 수 typedef struct list *linked_list; struct list { char *buf; linked_list prev; // 이전 포인터 linked_list next; // 다음 포인터 }; linked_list head, tail; // 시작과 끝 노드 int total, now; // 전체 노드와 현재 노드 char filename[13]; void gotoxy(int, int); void init_linked_list(void) { he.. 2007. 3. 28.
이중 연결 리스트 이중 연결 리스트 단일 연결 리스트(single linked list)와 환형 연결 리스트(circular linked list)는 각 노드에 다음 노드를 가리키는 한 개의 링크 필드만을 사용하기 때문에 특정한 노드를 검색하거나, 삽입 또는 삭제를 할 경우 한 쪽 방향으로만 해당 노드의 위치를 찾을 수 있는 구조이다. 그러나 임의의 노드를 찾을 때 양쪽 방향으로 해당 노드를 검색하면 쉽게 찾을 수 있다. 그러므로 이중 연결 리스트(double linked list)는 노드의 선행 노드를 가리키는 좌링크(LLINK), 자료(DATA)필드, 후행 노드를 가리키는 우링크(RLINK)의 세 개 영역으로 각 노드를 구분하여 양방향으로 특정 노드를 검색할 수 있도록 한 구조이다 이중 연결 리스트 삽입 데이터 항목 .. 2007. 3. 28.
연결 리스트 관련 문자열 포함 프로그램 #include #include #include void print_link(list_pointer); typedef struct list *list_pointer; struct list { char data; list_pointer next; }; list_pointer header1, header2; list_pointer insert_link() { list_pointer head, tail, temp; char ch; ch=getche(); temp=(list_pointer)malloc(sizeof(struct list)); temp->next=NULL; temp->data=ch; head=tail=temp; while( ch!='\r'){ ch=getche(); temp=(list_pointer.. 2007. 3. 28.
반응형