1181
备注:
|
2699
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 1: | 行号 1: |
练习: | = 练习参考答案 = |
行号 3: | 行号 3: |
= 第一章 = | == 第一章 == |
行号 21: | 行号 21: |
= 第二章 = | == 第二章 == |
行号 40: | 行号 40: |
void delete_from_ith(seq_list *list, int i){ | /*删除顺序表list中从pos开始的num个元素*/ void delete_from_ith(seq_list *list, int pos, int num){ int i; pos--; /*把元素的逻辑位置变成数组中的存放位置。逻辑位置从1开始,存放物理位置从0开始,两者差1*/ for(i = pos+num; i < list->size; i++) list->elem[i-num] = list->elem[i]; |
行号 43: | 行号 48: |
6. 已知单链表中的元素递增排列,编写一个算法,删除链表内所有大于min小于max的元素。 {{{#!cplusplus /*list指向带头结点单链表的头结点,元素递增有序排列,算法删除其中大于min小于max的所有元素*/ void delete_between_min_and_max(linklist list, int min, int max) { node *p, *q, *nextq; for(p = list; p->next->data <= min; p = p->next) ; q = p->next; while(q!=NULL && q->data < max) { nextq = q->next; free(q); q=nextq; } p->next = q; } }}} 7. 线性表逆置 {{{#!cplusplus /*将顺序表list中所有元素的顺序倒过来*/ void reverse(seq_list *list) { int i; for(i = 0; i < list->size /2; i++) { ElemType temp = list->elem[i]; list->elem[i] = list->elem[list->size - i -1]; list->elem[list->size-i-1] = temp; } } }}} {{{#!cplusplus /*将头结点为list的带头结点单链表中所有的元素的顺序倒过来*/ void reverse(linklist list) { node *p = list->next; list->next = NULL; while(p != NULL) { node *q = p->next; p->next = list->next; list->next = p; p = q; } } }}} |
练习参考答案
1. 第一章
6. 编写算法,求一元多项式的值latex($$Pn(x)=a_0+a_1x+a_2x^2+...+a_nx^n$$)
总计 = 3n+4次
2. 第二章
4. 已知顺序表L递增有序,写一个算法将X插入到线性表适当位置上,使顺序表仍然递增有序。
5. 编写一个算法,从顺序表中删除自第i个元素开始的k个元素
6. 已知单链表中的元素递增排列,编写一个算法,删除链表内所有大于min小于max的元素。
1 /*list指向带头结点单链表的头结点,元素递增有序排列,算法删除其中大于min小于max的所有元素*/
2 void delete_between_min_and_max(linklist list, int min, int max) {
3 node *p, *q, *nextq;
4 for(p = list; p->next->data <= min; p = p->next)
5 ;
6 q = p->next;
7 while(q!=NULL && q->data < max) {
8 nextq = q->next;
9 free(q);
10 q=nextq;
11 }
12 p->next = q;
13 }
7. 线性表逆置