~$ 存档

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

不带头结点的单链表,递归法比较简明!(必背!)

单链表的结构:

typedef struct node{
        int data;
        struct node *next;
}*List,Node;

创建
第一种方法:递归的终止条件:e为0

void CreatList(List &T)
{
  int e;
cin>>e;   
if(e==0)     T=NULL;   else   {     T=(List)malloc(sizeof(Node));     T->data=e;     CreatList(T->next);   } }

第二种方法,创建n个节点,中止条件:n==0

 1 void CreatList(List &L,int n)
 2 {
 3     int a;    
 4     if(n==0)
 5     {
 6         L=NULL;
 7     }
 8     else
 9     {       cin>>a;
10             L=(List)malloc(sizeof(Node));
11             L->data=a;
12             CreatList(L->next,--n);
13     }
14 }

遍历

void Traverse(List &L)
{
    if(L)
    {
        cout<<L->data<<" ";
        Traverse(L->next);
    }
}

查找

int GetElem(List &L,int e)/* 0成功,-1失败*/
{
    while(L)
    {
        if(L->data==e)
        return 0;
        L=L->next;
    }
    return -1;
}

销毁

  void DestoryList(List &L)
{
    if(L)
    {
        DestoryList(L->next);
        free(L);
        L=NULL;
    }
}

 

posted on 2016-03-03 14:46  LuoTian  阅读(897)  评论(0编辑  收藏  举报