//定義線性表
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結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...