链表详解

单链表:

节点:结构体

typedef struct Lnode  
{  
    int data;   
    struct Lnode *next;  
}LinkList;
#这里使用typedef 可以用 更简洁的名字 代替 struct Lnode

建立空链表:只有一个头结点,且指向空(NULL):

void InitList(LinkList*&L)  
{  
    L = (LinkList *)malloc(sizeof(LinkList));  
    L->next = NULL;  
} 

建立单链表:

 1 #头插法建立单链表
 2 void CreateListH(LinkList *&L, int a[], int n)
 3 {  
 4     //LinkList *s;                         
 5     int i;  
 6     L = (LinkList *)malloc(sizeof(LinkList)); /  
 7     L->next = NULL;                        
 8     for (i = 0; i < n; i++) 
 9     {
10         s = (LinkList *)malloc(sizeof(LinkList));   
11         s->data = a[i];  
12         s->next = L->next;   
13         L->next = s;  
14     }  
15 }  
#尾插法建立单链表
void  CreateListR(LinkList *&L, int a[], int n)  
{  
    int i;  
    LinkList *s, *r;  
    L = (LinkList *)malloc(sizeof(LinkList));  //申请空间  
    r = L;  
    for (i = 0; i < n; i++) 
    {  
        s->data = a[i];  
        r->next = s;            //将 s插入r的后面,  
        r = s;      
    }  
    r->next = L->next;             //队伍建立完成后,最后  队尾节点为 NULL;  
} 

 

posted @ 2017-09-27 12:29  hearecho  阅读(333)  评论(0)    收藏  举报