链表学习基础篇(c语言)

*链表是数据结构中十分重要的一种数据结构!学习过数组的人可能会发现数组这种数据结构在数据插入以及删除上十分的麻烦,而链表这种数据结构的设计则解决了这种问题,但是这种数据结构也有自己很致命的弱点—-在实现查找这种操作时则会面临很大的麻烦!
链表的操作思想类似图灵机的计算,操作头沿着线性的数据进行操作)。*
接下来看一段代码吧!看看一个动态长度的链表是如何创建的。

#include   
#include   
typedef int T;  
struct  node                    
{  
    T data;  
    struct node* next;  
};  
typedef struct node Node;  
#define SIZE sizeof(Node)    
//创建一个节点  
Node* creat_node(T d)  
{  
    Node* p=(node *)malloc(SIZE);  
    p->data=d;  
    p->next=NULL;  
    return p;  
}  

//创建链表   
void creat_list(Node** h)  
{  
    T d;  
    Node* p=NULL;  
    Node* pn=NULL;  
    printf("请输入一个数据:\n");  
        scanf("%d",&d);  
        pn=creat_node(d);  
        *h=pn;//节点类型的指针。  
        p=*h;  
    while(1){  
        printf("请输入一个数据:\n");  
        scanf("%d",&d);  
        if(d==0)  
            break;  
        pn=creat_node(d);  
        p->next=pn;  
        p=p->next;//p指向最后一个节点。  
    }  
}  

//遍历链表  
void travel(Node* h)  
{  
    printf("list:");  
    while(h){  
        printf("%5d",h->data);  
        h=h->next;  
    }  
    printf("\n");  
}  

void main()  
{  
    Node* head = NULL;  

    creat_list(&head);//创建链表 
    travel(head); //输出链表
}

如果大家有什么问题可以留言!毕竟这段代码本人觉得并非很难理解!在接下来的博客中我将介绍一下对链表的基本操作,以及基于链表的排序(插入排序,选择排序)。

你可能感兴趣的:(c语言,数据结构,链表)