線性表常見演算法實現

2021-09-26 23:16:04 字數 1978 閱讀 1074

//定義線性表

struct seqlist

;//初始化線性表

void

init_seqlist

(seqlist* l,

int n)

//線性表內的元素逆序

void

reverse_seqlist

(seqlist* l)

}

//從一給定的順序表l中刪除下標i~j(i<=j,包括i,j)的所有元素

void

delete_i_to_j

(seqlist* l,

int i,

int j)

l->size -

= j - i +1;

}

//設計乙個演算法,將順序表l中所有小於表頭元素的整數放在前半部分,大於表頭無素的整數放在後半部分

void

compare_with_head

(seqlist* l)

l->a[loc++

]= value;}}

}

//有乙個遞增非空單鏈表,設計乙個演算法刪除值域重複的結點。

//例如,,經過刪除後變成。

//定義節點

struct node

;//定義單鏈表

struct linked_list

;//單鏈表新增節點

void

linked_list_push

(linked_list*l,

int x)

else

q->next = p;}}

//列印單鏈表

void

print_linked_list

(linked_list l)

printf

("\n");

}//刪除單鏈表中的重複元素

void

delete_repeating_elements

(linked_list*l)

else

}}

//刪除單鏈表l(有頭結點)中的最小值結點。

void

delete_linked_list_min

(linked_list* l)

p = p->next;

}//遍歷去除最小值,初始時p指向第乙個元素,q指向第二個元素

//利用q的值來判斷是否需要刪去,因此p始終保持指向q前面乙個元素

//所以漏掉了對第乙個元素的判斷,後面需要補上

p = l->head;

struct node*q = p->next;

while

(p->next !=

null

)else

}//上面的檢查漏掉了第乙個元素,因此補上

if(l->head->data == min_value)

}

//單鏈表l,設計乙個演算法將其逆置

//要求不能建立新結點,只能通過表中已有結點的重新組合來完成

void

reverse_linked_list

(linked_list* l)

q->next = p;

r->next = q;

l->head->next =

null

; l->head = r;

}

線性表演算法實現

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

線性表演算法

1.在乙個遞增的順序表中插入乙個元素,並保持有序.分析 判斷順序表是否滿,滿了則追加空間.從表中的最後乙個元素開始,尋找插入位置,找到則插入,表長增一 int listinsert sq sqlist l,int ele for k l length 1 k 0 l slist k e k l sl...

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

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