单链表的基本操作(c语言表示)

创建结构体:

typedef struct list
{

    int data;
    struct list* next;
}node, * Linklist;//定义结构体

1.初始化单链表

//初始化链表
void Initlist(Linklist* L)//二级指针
{
    *L = (Linklist)malloc(sizeof(node));
    (*L)->next = NULL;
    //建立头结点
}

2.建立单链表

//创建链表
void creatList(Linklist L)
{
    node* r = L;
    printf("请输入数字\n");
    int a;
    do {
        scanf("%d", &a);

        node* s;
        s = (Linklist)malloc(sizeof(node));
        s->next = NULL;
        s->data = a;
        r->next = s;
        r = s;
    } while (a != 0);

}

3.链表的插入

void InsertList(Linklist L, int i, int  num)
{
    node* p = L, * r, * pre=NULL, * s; int k = 0;
    while (p != NULL && k < i)//将指针指向i-1位
    {
        pre = p;
        p = p->next;
        k++;
    }
    s = (Linklist)malloc(sizeof(node));
    s->data = num;
    r = pre->next;
    pre->next = s;
    s->next = r;
}

4.链表的删除

//删除链表数据
void Deletlist(Linklist L, int i)
{
    int k = 0; node* pre=NULL, * p = L;
    while (p != NULL && k < i)
    {
        pre = p;
        p = p->next;
        k++;
    }
    node* r = pre->next;
    pre->next = r->next;
    free(r);
}

5.链表的打印

//打印链表
void PrintList(Linklist L)
{
    node* p = L->next;
    while (p != NULL)
    {
        printf("%d\n", p->data);
        p = p->next;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值