单链表的C实现

代码包含:

  1. 创建空链表;
  2. 链表添加节点;
  3. 链表打印;
  4. 链表删除。
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>

typedef struct LIST_NODE NODE;
typedef struct LIST_NODE *LIST;
typedef double DATA_TYPE;
struct LIST_NODE
{
    DATA_TYPE element;
    NODE      *next;
};

NODE *creat_empty_list(void)
{
    NODE *p;
    p=malloc(sizeof(NODE));
    if(p==NULL)
        return NULL;
    p->next=NULL;
    printf("Empty list is created.\n");
    return p;

}

int add_node2list(LIST list,DATA_TYPE element)
{
    NODE *p,*tmp;

    tmp=malloc(sizeof(NODE));
    if(tmp==NULL) return -1;
    tmp->element=element;
    tmp->next=NULL;

    p=list;
    while(p->next!=NULL)
    {
        p=p->next;
    }
    p->next=tmp;

    return 0;
}

void print_list(LIST list)
{
    if(list->next==NULL)
    {
        printf("Empty List.\n");//empty list.
        return;
    }
    NODE *p;
    p=list->next;
    while(p->next!=NULL)
    {
        printf("%f\n",(double)p->element);
        p=p->next;
    }
     printf("%f\n",(double)p->element);//last node.
}

void delete_list(LIST list)
{
    NODE *p,*tmp;
    p=list;
    while(p->next!=NULL)
    {
        tmp=p;
        p=p->next;
        free(tmp);

    }
    free(p);//last node.
    printf("List has been deleted.\n");
}

int main()
{
    LIST list;
    list=creat_empty_list();
    for(int i= 0;i < 10;i ++)
    {
        add_node2list(list,(DATA_TYPE)i);
    }
    print_list(list);
    delete_list(list);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值