第二章線性表
2.10
status deletek(sqlist &a,int i,int k)//刪除線性表a中第i個元素起的k個元素
//deletek
2.11
status insert_sqlist(sqlist &va,int x)//把x插入遞增有序表va中
//insert_sqlist
2.12
int list***p(sqlist a,sqlist b)//比較字元表a和b,並用返回值表示結果,值為1,表示a>b;值為-1,表示ab.elem[i]?1:-1;
if(a.length==b.length) return 0;
return a.length>b.length?1:-1;//當兩個字元表可以互相比較的部分完全相同時,哪個較長,哪個就較大
}//list***p
2.13
lnode* locate(linklist l,int x)//鍊錶上的元素查詢,返回指標
//locate
2.14
int length(linklist l)//求鍊錶的長度
//length
2.15
void listconcat(linklist ha,linklist hb,linklist &hc)//把鍊錶hb接在ha後面形成鍊錶hc
//listconcat
2.16
見書後答案.
2.17
status insert(linklist &l,int i,int b)//在無頭結點鍊錶l的第i個元素之前插入元素b
else
}//insert
2.18
status delete(linklist &l,int i)//在無頭結點鍊錶l中刪除第i個元素
}//delete
2.19
status delete_between(linklist &l,int mink,int maxk)//刪除元素遞增排列的鍊錶l中值大於mink且小於maxk的所有元素
}//delete_between
2.20
status delete_equal(linklist &l)//刪除元素遞增排列的鍊錶l中所有值相同的元素
else
p->next=q;p=q;q=p->next; //當相鄰元素相等時刪除多餘元素
}//else
}//while
}//delete_equal
2.21
void reverse(sqlist &a)//順序表的就地逆置
//reverse
2.22
void linklist_reverse(linklist &l)//鍊錶的就地逆置;為簡化演算法,假設表長大於2
q->next=p;s->next=q;l->next=s;
}//linklist_reverse
分析:本演算法的思想是,逐個地把l的當前元素q插入新的鍊錶頭部,p為新表表頭.
2.23
void merge1(linklist &a,linklist &b,linklist &c)//把鍊錶a和b合併為c,a和b的元素間隔排列,且使用原儲存空間
p=s;q=t;
}//while
}//merge1
2.24
void reverse_merge(linklist &a,linklist &b,linklist &c)//把元素遞增排列的鍊錶a和b合併為c,且c中元素遞減排列,使用原空間
else
pre=pc;
}c=a;a->next=pc; //構造新表頭
}//reverse_merge
分析:本演算法的思想是,按從小到大的順序依次把a和b的元素插入新錶的頭部pc處,最後處理a或b的剩餘元素.
2.25
void sqlist_intersect(sqlist a,sqlist b,sqlist &c)//求元素遞增排列的線性表a和b的元素的交集並存入c中
}//while
}//sqlist_intersect
2.26
void linklist_intersect(linklist a,linklist b,linklist &c)//在鍊錶結構上重做上題
}//while
}//linklist_intersect
2.27
void sqlist_intersect_true(sqlist &a,sqlist b)//求元素遞增排列的線性表a和b的元素的交集並存回a中
else
}//while
while(a.elem[k]) a.elem[k++]=0;
}//sqlist_intersect_true
2.28
void linklist_intersect_true(linklist &a,linklist b)//在鍊錶結構上重做上題
}//while
}//linklist_intersect_true
2.29
void sqlist_intersect_delete(sqlist &a,sqlist b,sqlist c)
}//while
while(i a.elem[m++]=a.elem[ia的剩餘元素重新儲存。 a.length=m; }// sqlist_intersect_delete 分析:先從b和c中找出共有元素,記為same,再在a中從當前位置開始, 凡小於same的 元素均保留(存到新的位置),等於same的就跳過,到大於same時就再找下乙個same. 第2章自測卷答案姓名班級 一 填空 每空1分,共13分 1.嚴題集2.2 在順序表中插入或刪除乙個元素,需要平均移動表中一半元素,具體移動的元素個數與表長和該元素在表中的位置有關。2.線性表中結點的集合是有限的,結點間的關係是一對一的。3.向乙個長度為n的向量的第i個元素 1 i n 1 之前插入乙... 第2章線性表 一選擇題 1 下述哪一條是順序儲存結構的優點?北方交通大學 2001 一 4 2分 a 儲存密度大 b 插入運算方便 c 刪除運算方便 d 可方便地用於各種邏輯結構的儲存表示 2 下面關於線性表的敘述中,錯誤的是哪乙個?北方交通大學 2001 一 14 2分 a 線性表採用順序儲存,必... 第2章線性表自測卷 一 填空 1.在順序表中插入或刪除乙個元素,需要平均移動元素,具體移動的元素個數 與有關。2.線性表中結點的集合是的,結點間的關係是的。3.向乙個長度為n的向量的第i個元素 1 i n 1 之前插入乙個元素時,需向後移動個元素。4.向乙個長度為n的向量中刪除第i個元素 1 i n...資料結構第2章線性表答案
資料結構 第2章線性表
資料結構第2章線性表