单链表的创建和删除

单链表的整表创建

step1:确定函数原型:函数返回值:void

                                       函数参数:头指针的地址ListNode **、创建链表节点的个数n

step2:先判断要不要头结点,如果要头结点先创建一个头节点并让头指针指向头节点

step3:利用传进来链表节点的个数n做循环控制的条件,循环创建链表并插入

链表节点的结构

typedef int ElemType;

typedef struct node
{
    ElemType data;
    struct node *next;
}LinkNode;

利用头插的方式将节点插入到链表当中

/*有头结点版本
 *参数1:头指针的地址
 *参数2:创建节点的数量
 */
void CreateList(ListNode **head, int n)
{
    int i = 0;
    LinkNode *temp = NULL;
    //先创建头节点
    (*head) = (ListNode *)malloc(sizeof(ListNode));
    if(head == NULL)
    {
        return;
    }
    //初始化头节点
    (*head)->next = NULL;
  
    for(i=0; i<n; i++)
    {
        temp = (LinkNode *)malloc(sizeof(LinkNode));
        if(temp == NULL)
        {
            return;
        }
        temp->next = (*head)->next;
        temp->data = i;
        (*head)->next = temp; 
    }    
}

利用尾插的方式将链表插入到节点当中

step1:先生成一个头结点,使头指针指向头结点并初始化头结点指向NULL

step2:利用循环生成节点并从尾部进行插入(所以要定义一个ListNode*)的指针一直指向链表的最后一个节点。

void CreateTail(LinkNode **head, int n)
{
    LinkNode *temp = NULL;
    LinkNode *p = NULL;
    int i = 0;
    /*生成一个头结点*/
    *head = (LinkNode *)malloc(sizeof(LinkNode));
    if(*head == NULL)
    {
        return;
    }
    (*head)->next = NULL;
    temp = *head;    //令temp指向头结点
    
    for(i=0; i<n; i++)
    {
        p = (LinkNode *)malloc(sizeof(LinkNode));
        if(*p == NULL)
        {
            return;
        }
        p->next = NULL;    
        P->data= i;
        temp->next = p;
        temp = p;
    }                           
    
}

单链表整表删除

step1:函数原型 :函数参数:要删除链表的头指针的地址LinkNode**head

step2:判断*head是否为NULL(即链表是否为空),如果为空则返回

step3:循环遍历链表(以最后一个节点为NULL的条件作为循环结束的条件),然后没访问一个节点就释放一个节点即可(因为此要定义一个临时变量LinkNode*temp  来保存当前节点的下一个节点)

void DeleteLink(LinkNode **head)
{
    LinkNode *temp = *head;
    LinkNode *Node = NULL;    
    if(temp ->next == NULL)
    {
        return;
    }
    temp = temp->next;
    while(temp != NULL)
    {
        Node = temp->next;
        freep(temp);
        temp = Node;
    }
    (*head)->next = NULL;
}

猜你喜欢

转载自blog.csdn.net/wllen_/article/details/81209176
今日推荐