Chinaunix首页 | 论坛 | 博客
  • 博客访问: 503040
  • 博文数量: 140
  • 博客积分: 461
  • 博客等级: 下士
  • 技术积分: 878
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-28 10:06
文章分类

全部博文(140)

文章存档

2016年(1)

2015年(6)

2014年(20)

2013年(1)

2012年(16)

2011年(96)

分类:

2011-05-20 18:33:52

原文地址:C_顺序表 作者:luozhiyong131

/*

 * 顺序表实现函数

 * Lzy     2011-5-17

 */

#include

 

#define MaxLen 100               /*线性表的容量*/

typedef int ElemType;            /*线性表元素类型*/

 

typedef struct node

{

    ElemType data[MaxLen];       /*定义存储表中元素的数组*/

    int length;                   /*线性表的实际长度*/

}SeqList;

 

void SeqListInit(SeqList *SL)   /*初始化顺序表*/

{

    SL->length = 0;               /*表长度置为0*/

}

 

int SeqListGetlen(SeqList *SL)  /*线性表的长度*/

{

    return SL->length;

}

 

ElemType SeqListGetelem(SeqList *SL,int i)    /*按序号取元素*/

{

    if(i < 1 || i > SL->length)             /*检查序号是否有误*/

    {

        printf("查找序号有误!\n");

        return 0;

    }

 

    return SL->data[i-1];

}

 

int SeqListLocate(SeqList *SL,ElemType X)     /*按值查找,返回序号*/

{

    int n;

   

    for(n = 0; n < SL->length; n++)

        if(SL->data[n] == X)

            return n;

 

    return 0;          /*没找到,返回假*/

}

 

int SeqListInsert(SeqList *SL,int i,ElemType X)   /*在第i个位置插入X*/

{

    int n;

    if(i < 1 || i > SL->length)

    {

        printf("插入位置有误:\n");

        return 0;

    }

 

    if(SL->length >= MaxLen)

    {

        printf("存储空间已满:\n");

        return 0;

    }

    for(n = SL->length; n >= i; n--)   /*将插入点之后的所有元素向后移动*/

        SL->data[n+1] = SL->data[n];        /*数据后移*/

    SL->data[n] = X;                      /*数据插入*/

    SL->length++;                         /*表长加一*/

    return 1;

}

 

int SeqListDelele(SeqList *SL,int i)       /*删除第i个元素*/

 {

    if(i < 1 || i > SL->length)

    {

        printf("删除位置有误:\n");

        return 0;

    }  

 

    for(; i <= SL->length;i++)  /*将删除点之后的所有元素向前移动*/

        SL->data[i-1] = SL->data[i];

    SL->length--;

    return 1;

 }

——部分:Linux C

阅读(334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~