線性表演算法

2021-09-26 18:32:19 字數 1179 閱讀 8109

1. 在乙個遞增的順序表中插入乙個元素,並保持有序.

分析:  判斷順序表是否滿, 滿了則追加空間.   從表中的最後乙個元素開始,尋找插入位置,找到則插入,表長增一

int listinsert_sq(sqlist *l, int ele)

for(k=l->length-1;k>=0&&l->slist[k]>e;k--)

l->slist[k+1] =e;

l->length++;

return ok;

}

2.  給乙個帶頭節點的單鏈表,利用原有節點將單鏈表逆置

分析: 將原鍊錶斷開成兩個部分, 第一部分包含頭節點,第二部分包含剩餘節點,迴圈,將第二部分的每個節點逐個插入

第一部分頭節點的後面;

void  invert(linklist h)

}

3.  將兩個有序表合併. 設有兩個遞增排列的有序表,和並後, 仍遞增有序.

分析: 可以通過依次取出兩個表中的第乙個元素進行比較,從中得到值較小的元素,放入結果有序表中的第乙個位置;

然後將上次比較大的元素與另乙個表的第二個元素繼續比較,得到值較小的元素,放入結果有序表中的第二個位置

... 以此類推,將兩個表中的所有元素逐個放入結果有序表位置.

//順序表

int merge(sqlist *a,sqlist *b, sqlist *c)

while(i < a->length &&j length)

else

} while(ilength)

while(jlength)

c->length=k;

return ok;

}//hc鍊錶,不帶頭節點

lnode * merge(lnode *ha, lnode *hb)

else if(p->data>q->data)

if(p->data==q->data)

r = hc-> next;

while(p&&q)

else if(p->data>q->data)else if(p->data==q->data)

}if(p) r->next=p;

if(q) r->next=q;

return hc;

}

線性表演算法題庫 線性表習題

鍊錶。若指標p指向某結點時,能夠根據該指標找到其直接後繼,能夠順後繼指標鏈找到p結點後的結點。但是由於不知道其頭指標,所以無法訪問到p指標指向的結點的直接前趨。因此無法刪去該結點。2.雙鏈表。由於這樣的鍊錶提供雙向指標,根據p結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...

演算法例項線性表和非線性表

題目 匹配一段字元如aacd 匹配到aacdaacereggaac沒有匹配 可以使用也就是傻乎乎的乙個個去匹配 沒錯就是我 使用kmp演算法匹配次數會大大下降 暴力匹配法 public class kpmdemo public static int baoli string str1,string ...

線性表演算法實現

1.設有兩個無頭結點的單鏈表,頭指標分別為ha.hb.鏈中有資料域data鏈域next,兩鍊錶的資料都按遞增序存放,現要求將hb表歸到ha表中且歸併後ha仍遞增序,歸併中ha表中已有的資料若hb中也有則hb中的資料不歸併到ha中要求不申請額外的儲存空間來完成。merge hahb linklist....