データ構造(一)手順表(学習ing)
1942 ワード
//
typedef int SeqType;//
typedef struct
{
SeqType *elem;// ( )
int length;//
int listsize;//
}SqList;
typedefの使い方:単純なマクロの代わりに、タイプのエイリアスを定義し、ポインタ型を同時に宣言する複数のオブジェクトとして使用することができます.プラットフォームに関係のないタイプをtypedefで定義します.
複雑な声明のために新しいシンプルなエイリアスを定義します.(詳細は参照可能ですhttp://blog.csdn.net/superhoy/article/details/53504472)
定義操作
順序表を作成
/*
*
*/
SqList(creatList_sq)()
{
SqList *List = (SqList *)malloc(sizeof(SqList));
return *List;
}
初期化手順表/*
*
* 1,
* 0,
*/
int initList_sq(SqList &L)
{
L.elem = (SeqType *)malloc(sizeof(SeqType)*LIST_INIT_SIZE);
if(!L.elem)
return 0;// ,
L.length = 0;//
L.listsize = LIST_INIT_SIZE;// ,
return 1;
}
要素を挿入/*
*
*
*/
int insert_sq(SqList &L,inr index,SeqType val)
{
if(index>L.length)
{
//
printf(" ");
return 0;
}
if(index<0)// ,
{
index=L.length;
}
if(L.length==L.listsize)
{
// ,
SeqType* newBase = (SeqType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(SeqType));//
if(!newBase){
//
return 0;
}
L.elem=newBase;
L.listsize +=LISTINCREMENT;
}
// ,index
for(int i=L.length;i>index;i--){
L.elem[i]=L.elem[i-1];//
}
L.elem[index]=val;//
L.length++;
return 1;
}
//realloc(void *__ptr, size_t __size): , malloc() 。
ブログを参照してください:https://blog.csdn.net/flueky/article/details/52711668