节点指针域定义:
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