線性表的順序實現 C

2021-05-23 21:18:41 字數 2595 閱讀 4425

線性表的順序實現,採用c++封裝了乙個類,歡迎各位感興趣的同學共同學習討論。

/*******定義******/

#ifndef _cseqlist_ 

#define _cseqlist_

#ifdef __cplusplus

extern "c" seqlist;

class cseqlist

; seqlist *seq;

};#ifdef __cplusplus

} #endif

#endif

/*******實現******/

#include "cseqlist.h"

#include

#include

#include

cseqlist::cseqlist()

cseqlist::~cseqlist()

int    cseqlist::initlist(void)

seq->elem = (datatype*)malloc(list_init_size*sizeof(datatype));

if (seq->elem == null)

memset(seq->elem, 0x00, list_init_size*sizeof(datatype));

seq->length = 0;

seq->listsize = list_init_size;

return ok;

}void    cseqlist::destroylist()

if (seq->elem)

seq->length = 0;

seq->listsize = 0;

cout<<"destroylist success!"if (seq->elem)

seq->length = 0;

seq->listsize = list_init_size*sizeof(datatype);

int        cseqlist::listempty() const

if (seq->length == 0)

else

int        cseqlist::listlength() const

return seq->length;

}void    cseqlist::getelem(int i, datatype *e) const

if (e == null)

if (i < 1 || i > listlength())

if (seq->elem == null)

*e = seq->elem[i];

}void    cseqlist::priorelem(int cur_e, datatype *pre_e) const

if (cur_e <= 1 || cur_e > listlength())

if (seq->elem == null)

if (pre_e == null)

*pre_e = seq->elem[cur_e - 2];

void    cseqlist::nextelem(int cur_e, datatype *next_e) const

if (cur_e < 1 || cur_e >= listlength())

if (seq->elem == null)

if (next_e == null)

*next_e = seq->elem[cur_e ];

int        cseqlist::listinsert(int i, datatype e)

if (i < 1 || i > listlength() + 1)

if (seq->elem == null)

if (seq->length >= seq->listsize)

seq->elem = newbase;

seq->listsize += listincerment;

} datatype *p, *q;

q = &seq->elem[i - 1];

p = &seq->elem[seq->length - 1];

for (; p >= q; --p)

*q = e;

++seq->length;

return ok;

int        cseqlist::listdelete(int i, datatype *e)

if (i < 1 || i > listlength())

if (seq->elem == null)

datatype *p, *q;

q = &seq->elem[i - 1];

*e = *q;

p = &seq->elem[seq->length - 1];

for (++q; q <= p; ++q)

--seq->length;

return ok;

void    cseqlist::showlist(void) const

C 實現順序表(線性表)

基本思想是使用陣列作為盛放元素的容器,陣列一開始的大小要實現確定,並使用乙個pointer指向順序表中最後的元素。順序表中的元素是陣列中元素的子集。順序表在記憶體中是連續的,優勢是查詢,弱勢是插入元素和刪除元素。為避免裝箱拆箱,這裡使用泛型,代替object。使用object的例子可以參照這個鏈結中...

C 實現線性表的順序儲存(順序表)

關於資料結構中的 線性表 佇列 棧 的相關講解,請看 c 實現資料結構中的線性表 typedef int elementtype define maxsize 10 struct sequence typedef int element type define maxsize 10 include ...

線性表順序實現

線性表實現,建立表,插入元素,刪除元素,銷毀表,表的遍歷,表的並集交集差集。不斷更新中。include include include include define list init size 100 初始大小 define error 0 define listincrement 10 增量大小...