數據結構考試算法

直接插入

冒泡排序

 

選擇排序

 

二分查找

int BinSearch(SeqList R,KeyType K)
{
    int low=1,high=n,mid;
    while(low<=high)
    {
        mid =(low+high)/2;
    if(R[mid].key==K) return mid;
    if(R[mid].key>K)
    high = mid -1;
    else
    low = mid +1;
    }
}

 

 

順序查找

 

二叉樹

 

 

線性表 

鏈表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.設順序表L是一個遞增有序表,試寫一個函數,將x插入L中,並使L仍是一個有序表。

順序表的結構定義如下:

#define TRUE 1

#define FALSE 0

typedef int datatype;    /*定義表元素類型*/         

#define maxsize 1024 /*線性表的最大長度*/

typedef struct

{ datatype elem[maxsize];/*存放表結點的數組*/ 

int length;                         /*表長*/

}sequenlist;

參考程序:

int Insert(sequenlist *L,datatype x)

{

 if(L->length==maxsize)

return FALSE;

 int i=L->length-1;

 while(i>=0 && x<L->elem[i])

   {L->elem[i+1]=L->elem[i];

 i--;

  }

 L->elem[i+1]=x;

 L->length++;   

 return TRUE;

}

 

5. 設帶頭節點的單鏈表L是一個遞增有序表,試寫一個函數,將x插入L中,並使L仍是一個有序表。

參考答案:

typedef struct LNode{

    Elemtype data;

    struct LNode* next;

  } LinkList;

 

LinkList* Insert(LinkList *L,datatype x)

{LinkList *p,*q,*t;

 t=(LinkList*)malloc(sizeof(LinkList));

 if(!t)

   return NULL;

 t->data=x;

 p=L->next;

 q=L;

while(p!=NULL && x>p->data)

{q=p;//q指向p的前驅結點

 p=p->next;

}

  q->next=t;

t->next=p;

 return  L;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章