데이터 구조 학습 노트 ― 선형 표

특징
1. 표 두, 표 미, 다른 요 소 는 하나의 직접 전구 와 직접 후계 만 있 습 니 다.
2. 모든 위치 에 삽입, 삭제 가능
저장 방식
1. 순서 표
2. 링크 (단 방향 링크, 양 방향 순환 링크)
3. 구체 적 인 실현 방식
1. 순서 표
질문:
    순서 표 로 일부 정 수 를 저장 하고 정 수 를 입력 하면 데 이 터 를 삽입 하 는 것 을 나타 낸다 (예 를 들 어 입력 3 은 삽입 3 을 나타 낸다). 마이너스 정 수 를 입력 하면 데 이 터 를 삭제 하 는 것 을 나타 낸다 (예 를 들 어 입력 - 2 는 삭제 2 를 나타 낸다). 문 자 를 입력 하면 프로그램 을 종료 하 는 것 을 나타 낸다.삽입 과 삭제 과정 에서 이 표 의 순 서 를 유지 합 니 다.
//seqlist.h

#ifndef __SEQLIST_H__
#define __SEQLIST_H__

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define SIZE 10   /*     */

typedef int datatype;  /*     */
typedef struct seqlist
{
	datatype data[SIZE]; //  
	int last;   //    
}seq_list, *seq_plist;

#endif


//test.c

#include "seqlist.h"

int main(void)
{
	int a;    //    
	int ret;
	seq_plist s;
	s = seqlist_init();  //      
	while(1){
		printf("      :
"); ret = scanf("%d", &a); if(ret != 1) exit(1); else if(data >= 0) seqlist_insert(s, a); else seqlist_del(s,-a); } return 0; } //seqlist.c #include "seqlist.h" seq_plist seqlist_init(void)    // { seq_plist s; s = (seq_plist)malloc(sizeof(seq_list)); if(NULL == s){ printf("malloc failed!
"); exit(1); } s->last = -1; return s; } void seqlist_insert(seq_plist s, typedata a)  // { if(seqlist_full(s)) return; int i,j; for(i = 0 ; i <= s->last; i++) if(a < s->data[i]) break; for(j = s->last; j >= i; j--) s->data[j+1] = s->data[j]; s->data[i] = data; s->last++; seqlist_show(s); } void seqlist_del(seq_plist s, typedata a)   // { if(seqlist_empty(s)) return; int i,j; for(i = 0; i <= s->last; i++) if(a = s->data[i]) break; for(j = i; j < s->last; j++) s->data[j] = s->data[j+1]; s->last--; seqlist_show(s); } bool seqlist_full(seq_plist s)  // { if(s->last == size-1) return true; else  return false; } bool seqlist_empty(seq_plist s) // { if(s->last == -1) return true; else  return false; } void seqlist_show(seq_plist s) // { int i; for(i = 0; i <= s->last; i++) printf("%d\t", s->data[i]); printf("
"); }

좋은 웹페이지 즐겨찾기