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("新节点分配失败,程序终止! \n");
	    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("新节点分配失败,程序终止! \n");
	    exit(-1);
	}
	pNew->Element=val;
	pNew->Next = NULL;
	(*tail)->Next = pNew; 
	*tail = pNew;
	
}

void Showlist(List pHead){
	
	printf("%p\n",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("\n向链表添加数据时间为%f秒!\n",totaltime);	

	start=clock();

    
    
    for(i = 0;i<100000;i++ ){
		AddItemInTail(10000000,&tail);
	}
    //Showlist(L);
    finish=clock();
    totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
    printf("\n输出数据时间为%f秒!\n",totaltime);	
    
    return 0;
}

 

posted @ 2019-08-10 22:34  顾wenfan  阅读(2004)  评论(0编辑  收藏  举报