선형 표 & 단일 체인 표

2903 단어
선형 표 * * * 선형 표 도 순서 표 라 고 하 는데 가장 기본 적 이 고 간단 하 며 가장 자주 사용 하 는 데이터 구조 입 니 다.선형 표 에서 데이터 요소 간 의 관 계 는 일대일 관계 이다. 즉, 첫 번 째 와 마지막 데이터 요 소 를 제외 하고 다른 데이터 요 소 는 모두 첫 번 째 와 끝 이 연결 되 어 있다.접근 이 편리 하고 직접적 이지 만 삽입, 삭제 에 필요 한 메모리 공간 이 부족 합 니 다. 확실 하지 않 아서 큰 경우 가 많 습 니 다.
단일 체인 시트 의 데 이 터 는 노드 로 표 시 됩 니 다. 모든 노드 의 구성: 요소 (데이터 요소 의 이미지) + 포인터 (후계 요소 의 저장 위 치 를 표시 합 니 다) 요 소 는 데 이 터 를 저장 하 는 저장 장치 이 고 지침 은 모든 노드 를 연결 하 는 주소 데이터 입 니 다.그래서 모든 결점 은 하나의 구조 체 이다.여기 서 주의해 야 할 것 은 구조 체 를 정의 할 때 구조 체 안의 변 수 는 반드시 메모리 공간 을 명확 하 게 확인 할 수 있어 야 한 다 는 것 이다.

#include 
#include 

//       
typedef struct node{
    char *name;//        
    struct node *next;//          
}Node;

void myFree(Node *pHead){
    while (pHead != NULL) {
        //          
        Node *pTemp = pHead->next;
        
        //    name       
        free(pHead->name);
        
        //       
        free(pHead);
        
        //pHead     
        pHead = pTemp;
    }
}

int main(int argc, const char * argv[]) {
    
    Node *pHead = NULL;
    Node *pTail = NULL;
    
    for (int i = 0; i < 3; i++) {
        int total = 0;//           
        
        //        
        Node *pTemp = (Node *)malloc(1 * sizeof(Node));
        if (pTemp == NULL) {
            myFree(pHead);
            exit(EXIT_FAILURE);
        }
        
        //    
        // name        
        printf("     :");
        char character;
        while (1) {
            //      
            character = getchar();
            
            //         '
' if (character == '
'){ // break; } else{ // // if (pTemp->name == NULL) { // malloc pTemp->name = (char *)malloc(1 * sizeof(char)); if (pTemp->name == NULL) { exit(EXIT_FAILURE); } } else{ pTemp->name = (char *)realloc(pTemp->name, (total+1)*sizeof(char)); if (pTemp->name == NULL) { exit(EXIT_FAILURE); } } pTemp->name[total] = character; total++; } } // next pTemp->next = NULL; // + head tail if (pHead == NULL) { pHead = pTemp; pTail = pTemp; } else{ pTail->next = pTemp; pTail = pTemp; } } Node *pTemp = pHead; while (pTemp != NULL) { printf("%s
", pTemp->name); pTemp = pTemp->next; } printf("
"); return 0; }

좋은 웹페이지 즐겨찾기