线性表链式表示(c语言版)

//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<i;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;j<i;j++)  p=p->next;
     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 <stdio.h>
#include <stdlib.h>
#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<list->len;i++)
 {
 printf("%d/n",px->data);
 px=px->next;
 }
 printf("%d/n",list->len);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值