資料結構 順序表和煉表的實現和應用

2021-10-01 19:59:13 字數 1857 閱讀 1685

1. 採用遞增有序的順序表表示集合,求解兩個集合的交集

(1)定義順序表的儲存結構;

(2)實現儲存遞增有序集合的順序表的建立、求交集運算;

2. 採用遞增有序的鍊錶表示集合,求解兩個集合的交集

(1)定義鍊錶的儲存結構;

(2)實現儲存遞增有序集合的鍊錶的建立、求交集運算;

3. 比較順序表和煉表的優缺點和適用場合

1.順序表

#include#includeusing namespace std;

#define initsize 20//表長度的初始定義

typedef int elemtype;

typedef struct sqlist;//動態分配陣列順序表的型別定義

//初始化順序表

sqlist initlist(sqlist& l)

l.length = 0;

l.maxsize = initsize;

return l;

}//建立順序表

sqlist createlist(sqlist& l)

return l;

}//顯示順序表

void displaylist(sqlist l)

printf("\n\n");

}//求交集

void intersection(sqlist &l1, sqlist &l2,sqlist &l3)

else lnode,*linklist;

//初始化單鏈表

linklist initlist()

l->next = null;

return l;

}//用尾插法建立單鏈表

linklist list_tailinsert(linklist& l)

r->next = null;//尾結點指標置空

return l;

}//列印單鏈表

void printlist(linklist l)

printf("\n");

}//單鏈表求交集

void intersection(linklist a, linklist b, linklist &c)

} r->next = null;//置c尾結點指標為空

}//主函式

int main()

1.順序表

2.單鏈表

1.線性表的順序儲存型別描述中有elemtype的元素型別,但是在vc中需要typedef int elemtype,才能使用,否則會出現未定義識別符號elemtype

2.出現c6031 返回值被忽略: "scanf"的原因是因為在ansi c中沒有scanf_s(),只有scanf(),但是scanf()在讀取時不檢查邊界,所以可能會造成記憶體洩露。於是microsoft公司在vs中提供了scanf_s(),所以只需要把把scanf換為scanf_s就可以解決問題了

3.出現引發了未經處理的異常:寫入訪問許可權衝突的問題是因為沒有初始化順序表,所以只需要initlist(l);就可以解決這個問題了

4.linklist和lnode*不同名字的同乙個指標型別,linklist型別的指標變數head表示他是單鏈表的頭指標,lnode *型別的指標變數p表示它是指向某一結點的指標

5.求單鏈表的交集時列印的結果一直出不來,困擾了好久,後來上網查詢,比對了別人的**,發現自己缺少了乙個&,導致對鍊錶修改的失敗,列印不出來結果

資料結構之順序表和煉表

1.線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物 理上儲存時,通常以陣列和鏈式結構的形...

(資料結構) 順序表和煉表的比較

1.儲存方式的比較 順序表的儲存空間是一次性分配好的了,而鍊錶的儲存空間是多次分配的。2.儲存密度 節點值域所佔儲存量 節點結構所佔的儲存總量 順序表的密度是等於1的,而鍊錶的密度是小於1的 1.訪問方式 順序表可以隨機抽取,也可以順序抽取 但是鍊錶只可以順序抽取 讀取第n個元素,那麼就必須遍歷其之...

C語言 資料結構 順序表和煉表

一 線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續的,線性表在物理上儲存時,通常以陣列和鏈式結構的形式...