Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631283
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:19:17

原文地址: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

阅读(140) | 评论(0) | 转发(0) |
0

上一篇:C_链表

下一篇:二道C语言笔试题

给主人留下些什么吧!~~