• Linked List in C (3Sorted List)


    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    
    typedef struct _node
    {
        int data;
        struct _node *next;
    }node;
    
    void insertNodeSorted(node **head, node *newNode);
    void printList(node *head);
    void deleteList(node **head);
    
    void insertNodeSorted(node **head, node *newNode)
    {
        if(*head == NULL)
        {
            *head = newNode;
        }
        else if( (*head)->data > newNode->data )
        {
            newNode->next = *head;
            *head = newNode;
        }
        else
        {
            node *temp = *head;
            while( (temp->next != NULL) && (temp->next->data < newNode->data))
            {
                temp = temp->next;
            }
            newNode -> next = temp -> next;
            temp -> next = newNode;
        }
    }
    
    void printList(node *head)
    {
        int i = 0;
        node *temp = head;
        while(temp != NULL)
        {
            printf("data in node %d is: %d \n", i, temp->data);
            temp = temp->next; 
            i++;
        }
    }
    
    void deleteList(node **head)
    {
        node *temp = *head;
        node *delNode;
    
        while(temp!= NULL)
        {
            delNode = temp;
            temp = temp -> next;
            delNode -> next = NULL;
            free(delNode);            
        }
    
        free(temp);
    }
    
    int main(int argc, char *argv[])
    {
        int seed;
        int num_of_rand_nums;
        int max_value;
        int i;
        node *head = NULL;
    
        sscanf(argv[1],"%d",&seed);
        srandom(seed);
    
        sscanf(argv[2],"%d",&num_of_rand_nums);
        sscanf(argv[3],"%d",&max_value);
    
        for(i=0;i<num_of_rand_nums;i++)
        {    
            node *newNode = malloc(sizeof(node));
            if(newNode == NULL)
            {
                printf("newNode is NULL! \n");
                exit(1);
            }
            newNode -> next = NULL;
            newNode -> data = random()%(max_value + 1);
            insertNodeSorted(&head,newNode);
        }
        
        printList(head);
        deleteList(&head);
    
        return 0;
    }
  • 相关阅读:
    常用的一些js方法
    git常用命令
    thread join和detach的区别
    C和C++的区别和联系
    C++面试集锦( 面试被问到的问题 )
    C/C++面试题:编写类String的构造函数、析构函数和赋值函数。
    C++ 多态的实现及原理
    获取当前操作系统的ip
    CString的头文件
    C++ 多用户模式下同一个exe只能运行一次
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/12914071.html
Copyright © 2020-2023  润新知