데이터 구조: 단일 체인 시트 의 생 성, 옮 겨 다 니 기, 삽입, 삭제, 읽 기 작업

26125 단어 데이터 구조
include<stdio.h>
#include

typedef struct Node{    //               
        int data;
        struct Node *next;
}Node;

Node *create_list(Node **head, int n);     //    
Node *create_node();                      //      
void insertnode(Node **head,int num, int i);    //      
void printnode(Node *head);             //      
void deletenode(Node **head,int num);  //      


Node *create_list(Node **head, int n){      //       
        Node *current=NULL, *previous=NULL;

        *head =  (Node *)malloc(sizeof(Node));    //          
        (*head)->data = n;      //      ,          

        current = *head;
        for(int i=0;i<n;i++){                //  n      
                previous = current;             //           
                current = create_node();    //             
                previous->next = current;  //               
        }
        current->next = NULL;        //           NULL

        return *head;
}

Node *create_node(){                    //      
        Node *p;
        p = (Node *)malloc(sizeof(Node));   //           
        if(p == NULL){
                printf("      
"
); exit(1); } p->data = rand()%100; // 100 return p; } void deletenode(Node **head, int num){ Node *current = *head; Node *previous = NULL; while(current != NULL && current->data != num){ // NULL> previous = current; // current = current->next; // } if(current == NULL){ // NULL printf(" !
"
); // } else{ // if(previous != NULL){ // previous->next = current->next; // } else{ // *head = (*head)->next; // } free(current); // (*head)->data --; } } void printnode(struct Node *head){ struct Node *ptr = head; while(ptr != NULL){ printf("%d ",ptr->data); ptr = ptr->next; } putchar('
'
); } void insertnode( Node **head, int num, int i ){ // num, i Node *previous = NULL; Node *current = (*head)->next; Node *new; int count=1; new = (Node *)malloc(sizeof(struct Node)); if(new == NULL){ printf("
"
); exit(1); } new->data = num; if(current == NULL){ // *head = new; // new->next = NULL; // NULL } else{ while( (current != NULL) && (count != i) ){ // , i previous = current; current = current->next; count++; } if(current == NULL && count>i){ printf("
"
); exit(EXIT_FAILURE); } else{ previous->next = new; new->next =current; (*head)->data ++; } } } int main(){ int num; int n,e; int i; Node *head=NULL; printf(" :"); scanf("%d",&n); head = create_list(&head, n); printnode(head); while(1){ printf(" :"); scanf("%d",&num); printf(" :"); scanf("%d",&i); if(num == -1){ break; } insertnode(&head,num, i); printnode(head); } while(1){ printf(" :"); scanf("%d",&num); if(num == -1){ break; } deletenode(&head,num); printnode(head); } return 0; }

코드 가 위 와 같 아서 넣 으 면 달 릴 수 있어 요...근 데 이름 이 좀 어 지 러 운 것 같 아 요.

좋은 웹페이지 즐겨찾기