关闭

简单顺序表 C语言实现

967人阅读 评论(0) 收藏 举报

顺序表是以数组为存储结构的线性表。由于数组中各元素的地址是可计算的,所以查找定位操作 有很高的执行效率。但是这种顺序存储结构的缺点也相当明显,要获得连续的内存空间就必须一次性申请,而在程序执行之前往往无法精确得到所需空间的大小。这时通常先确定一个合适的数组长度,如果后来空间不够,再重新申请一个更大的空间并把原先空间的数据转移过来。可以预见到,如果数据庞大的话,这个转移操作是相当耗费资源的。所以顺序表往往用在一些经常查找却很少改动的数据上。

这里写的是一个简单的线性表,数据空间是一定的,不能动态增加,完善的版本稍后用C++写 ^_^
可变长度 顺序表 C++实现

 

/* SeqList.h
 * Coding by nyzhl 
*/

#define TRUE 1
#define FALSE 0
#define MAX_SIZE 20

typedef 
int ElemType;
typedef 
struct {
    ElemType data[MAX_SIZE];
    
int last;
}
SeqList;

void InitList(SeqList *sl) {
    sl
->last = -1;
}



int EmptyList(SeqList *sl) {
    
return sl->last == -1;
}


int FullList(SeqList *sl) {
    
return sl->last == MAX_SIZE-1;
}


int Locate(SeqList *sl, ElemType elem) {
    
for(int i=0; i<=sl->last; i++
        
if(sl->data[i] == elem) return i;
    
return -1;
}


int GetData(SeqList *sl, int index, ElemType *elem) {
    
if(index<0 || index>sl->last) return FALSE;
    
*elem = sl->data[index];
    
return TRUE;
}


int InsertList(SeqList *sl, int index, ElemType elem) {
    
if(index<0 || index>sl->last+1return FALSE;
    
if(FullList(sl)) return FALSE;
    
for(int i=sl->last; i>=index; i--)
        sl
->data[i+1= sl->data[i];
    sl
->data[index] = elem;
    sl
->last ++;
    
return TRUE;
}


int DelList(SeqList *sl,int index, ElemType *elem) {
    
if(index<0 || index>sl->last) return FALSE;
    
*elem = sl->data[index];
    
for(int i=index; i<sl->last; i++)
        sl
->data[i] = sl->data[i+1];
    sl
->last --;
    
return TRUE;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:406347次
    • 积分:5774
    • 等级:
    • 排名:第4452名
    • 原创:159篇
    • 转载:10篇
    • 译文:1篇
    • 评论:130条
    最新评论
    我的主页