线性表链式表示(c语言版)
- by Hector
[CODE=cplusplus]
//vs2005,vc6.0,gcc测试均通过
/*———- Link.H —————*/
typedef int DataType; /*定义节点数据类型*/
typedef struct tagLink
{
DataType data;
struct tagLink* next; //指向该结构体的指针
}*Link; //指向该结构体的指针
typedef struct tagLinkList
{
Link head;
int len;
}*LinkList;
LinkList InitList() //构造一个空的线性表
{
LinkList list;
list=(LinkList)malloc(sizeof(struct tagLinkList));
list->head=NULL;
list->len=0;
return list;
}
int ListInsert(LinkList L,int i,DataType e) //在第I个元素之后插入e,如果是0则插入在首位
{
if(i<0&&i>L->len) return 0;
else
{
Link bx,p;
bx=(Link)malloc(sizeof(struct tagLink));
bx->data=e;
bx->next=NULL;
p=L->head;
if(i==0)
{
bx->next=p;
L->head=bx;
}
else
{
int j=1;
for(j;j{
p=p->next;
}
bx->next=p->next;
p->next=bx;
}
L->len++;
return 1;
}
}
int ListDelete(LinkList L,int i) //删除第i个元素
{
if(i<1&&i>L->len)
{
printf(“删除出错”);
return 0;
}
else
{
Link p,q;
DataType t;
p=L->head;
if(i==1)
{
L->head=p->next;
t=p->data;
free(p);
}
else
{
int j=2;
for(j;jnext;
t=p->next->data;
q=p->next;
p->next=p->next->next;
free(q);
}
L->len–;
return t;
}
}
/*—————- http://ourys.com原创,做人要厚道,转帖请标明来处 ——- Author:Hector ——-*/
/*—————- 基本测试文件 ——- Author:Hector ——-*/
#include
#include
#include “List.h”
int main()
{
Link px;
LinkList list=InitList();
int i;
for(i=0;i<10;i++)
{
ListInsert(list,i,(i+1)*(i+1));
}
ListDelete(list,1);
ListDelete(list,4);
px=list->head;
for(i=0;i
{
printf(“%d\n”,px->data);
px=px->next;
}
printf(“%d\n”,list->len);
return 0;
}
[/CODE]