遞歸練習
階乘
字符串的逆序輸出
迴文數
求和
線性存儲結構:
鏈式存儲結構:
索引存儲:
哈希表:
時間效率的計算:O(1)<O(log2(n))<O(n)<O(nlog2(n))<o(n^2)<O(n^3)<O(2^n)<0(n!)
遞歸時間效率的計算:
線性表:
#define MaxSize 10
typedef struct Data
{
ElemType data[MaxSize];
int length;
}SQList;
//初始化
void InitList(SQList *&L,int n)
{
SqList l=(SqList *)malloc(sizeof(SQList));
l->length=0;
}
void IsEmpty(SQList *L);
void GetElem(SQList *l,int i,int &e) //i是邏輯地址,要轉化爲物理地址
{
if(i<1||i>l->length) return 0;
e=l->data[i-1];
return;
}
int GetElem(SQList *l,int key)
{
int j=0;
while(j<l->length&&key!=l->data[j])j++;
if(j>=l->length) return 0;
return j+1;
}
//該算法的時間複雜度不僅與l->length有關,也與查找key的位置有關,最壞時間複雜度:O(l->length-i+1)
int ListInsert(SQList *&l,int key,int i)
{
if(i<1||i>l->length) return 0;
i--;
for(int j=l->length;j>i;j--)
l->data[j]=l->data[j-1];
l->data[i]=key;
}
//同插入
int ListDelete(SQList *&l,int key)
{
int pos=GetElem(l,key);
if(!pos) return 0;
for(int i=pos+1;i<l->length;i++)
l->data[j-1]=l->data[j];
l->lenght--;
return 1;
}
void DisPlayList(SQLisy *l);
int GetListLength(DQList *l);
void DestroyList(SQList *&l)
{
free(l);
return;
}