• C语言实现链表


    最近在复习数据结构,C语言指针都忘光了....

    使用指针操作链表、添加数据真的快......Redis也是这样的吧!

    希望今年上岸吧! 剩下的一百多天加油鸭! Metropolitan

    爱小静!

    代码如下:

    #include<stdio.h>
    #include<malloc.h>
    #include<stdlib.h>
    #include <time.h>
    #ifndef _CLOCK_T_DEFINED
    typedef long clock_t;
    #define _CLOCK_T_DEFINED
    #endif
    
    typedef int ElementType;        //    定义数据类型,可根据需要进行其他类型定义
    typedef struct ListNode {
        ElementType  Element;        //    数据域,存放数据
        struct ListNode* Next;        //    指向下一个链表节点
    }Node,*List;       //List   ~ Node *   
    void InitList(Node* *phead ){
    	
    	*phead = (Node *)malloc(sizeof(Node));
    
    	if(*phead == NULL){
    		printf("头节点分配失败!"); 
    		exit(-1); 
    	}
    
    	(*phead)->Next = NULL;
    }
    
    void AddItemInHead(List pHead,int val,Node * *tail){
    	
    	List pNew = (Node *)malloc(sizeof(Node)); //生成新节点
    	if(pNew == NULL){
    	    printf("新节点分配失败,程序终止! 
    ");
    	    exit(-1);
    	}
    	pNew->Element=val;
    	pNew->Next = NULL;
    	if(pHead->Next == NULL){
    		pHead->Next = pNew; 
    	}else{
    		(*tail)->Next = pNew; 
    	}
    	
    	*tail = pNew;
    	
    	
    }
    
    void AddItemInTail(int val,List *tail){
    	
    	List pNew = (Node *)malloc(sizeof(Node)); //生成新节点
    	if(pNew == NULL){
    	    printf("新节点分配失败,程序终止! 
    ");
    	    exit(-1);
    	}
    	pNew->Element=val;
    	pNew->Next = NULL;
    	(*tail)->Next = pNew; 
    	*tail = pNew;
    	
    }
    
    void Showlist(List pHead){
    	
    	printf("%p
    ",pHead);
      	pHead=pHead->Next; //跳过头结点输出
      	while(pHead!=NULL){
        printf("%d ",pHead->Element);
        pHead=pHead->Next;
      }
    }
    
    //    主函数 
    int main() {
        Node* L;
        Node * tail;
        
    	InitList(&L);       
    	
    	clock_t start,finish;
      	double totaltime;
        start=clock();
    
    	int i;
    	for(i = 0;i<100;i++ ){
    		AddItemInHead(L,i,&tail);
    	}
    	
    	AddItemInTail(100000,&tail);
    	
    	finish=clock();
        totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
        printf("
    向链表添加数据时间为%f秒!
    ",totaltime);	
    
    	start=clock();
    
        
        
        for(i = 0;i<100000;i++ ){
    		AddItemInTail(10000000,&tail);
    	}
        //Showlist(L);
        finish=clock();
        totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
        printf("
    输出数据时间为%f秒!
    ",totaltime);	
        
        return 0;
    }
    
  • 相关阅读:
    8.图形软件开发
    7.GDI绘图技术
    15.MFC网络通信
    JavaWeb:基于MVC设计模式的一个小案例(一)
    在虚拟机里连接PLC S7-200
    mark-又重新回到博客园
    早起的奇迹
    STM32-cJSON库的打包和解析
    Copley-STM32串口+CANopen实现双电机力矩同步
    DataStructure-链表实现指数非递减一元多项式的求和
  • 原文地址:https://www.cnblogs.com/outxiao/p/11333292.html
Copyright © 2020-2023  润新知