单链表

节点指针域定义:

typedef struct tag_LinkListNode LinkListNode;//头文件中定义
struct tag_LinkListNode
{
    LinkListNode* next;

}

头结点:

    typedef struct tag_LinkList//源文件中定义
    {
        LinkListNode* next;
        int length;

}TLinkList;

数据元素定义

    struct Value //主函数中定义
    {
        LinkListNode header;
        int v;

};

插入元素到位置pos的算法

    1)判断线性表及插入位置是否合法;
    2)由表头开始通过next指针移动pos次后,当前元素的next指针即指向要插入的位置;
    2)插入新元素,线性表长度加1。

头文件

#ifndef LINKLIST_H
#define LINKLIST_H

typedef void LinkList;
typedef struct tag_LinkListNode LinkListNode;
struct tag_LinkListNode
{
LinkListNode* next;
};

LinkList* LinkList_Create();

void LinkList_Destroy(LinkList* list);

void LinkList_Clear(LinkList* list);

int LinkList_Length(LinkList* list);

int LinkList_Insert(LinkList* list, LinkListNode* node, int pos);

LinkListNode* LinkList_Get(LinkList* list, int pos);

LinkListNode* LinkList_Delete(LinkList* list, int pos);

#endif

源文件

#include
#include
#include “LinkList.h”

typedef struct tag_LinkList //头节点
{
LinkListNode header;
int length;
}TLinkList;

LinkList* LinkList_Create()
{
TLinkList* ret = (TLinkList*)malloc(sizeof(TLinkList));
if(ret != NULL)
{
ret->length = 0;
ret->header.next = NULL;
}
return ret;
}

void LinkList_Destroy(LinkList* list)
{
free(list);
}

void LinkList_Clear(LinkList* list)
{
TLinkList* sList = (TLinkList*)list;
if(sList != NULL)
{
sList->length = 0;
sList->header.next - NULL;
}
}

int LinkList_Length(LinkList* list)
{
TLinkList* sList = (TLinkList*)list;
int ret = -1;
if(sList != NULL)
{
return sList->length;
}
return ret;
}

int LinkList_Insert(LinkList* list, LinkListNode* node, int pos)
{
TLinkList* sList = (TLinkList*)list;
int ret = (sList != NULL)&&(pos>=0)&&(node != NULL);
int i = 0;
if(ret)
{
LinkListNode* current = (LinkListNode*)sList;
for(i=0;(i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值