第二章 線性表(2 7)

2022-09-20 17:42:09 字數 3624 閱讀 1452

目錄2.7.2有序表的合併

2.鏈式有序表的合併

1、分別獲取la表長m和lb表長n

2、從lb表中第乙個元素開始,迴圈n次執行以下操作:

從lb中查詢第i個資料元素賦值給e;

在la中查詢元素e,如果不存在,則將e插在表la的最後

//合併

void combine(sqlist &a, sqlist &b)

} if (count == 0)

}}

#includeusing namespace std;

\#define max 100

typedef struct

sqlist;

//初始化

int initsqlist(sqlist &l)

else }

//獲取表長

int listlength(sqlist l)

//遍歷

void tr**elist(sqlist &l)

printf("\n");

}//建立線性表

void createlist(sqlist &l)

}//合併

void combine(sqlist &a, sqlist &b)

} if (count == 0)

}}int main()

else

if (initsqlist(b))

else

createlist(a);

printf("a表長度:%d\n", a.length);

tr**elist(a);

createlist(b);

printf("b表長度:%d\n", b.length);

tr**elist(b);

printf("合併後的線性表:\n");

combine(a, b);

printf("合併後表長度:%d\n", a.length);

tr**elist(a);

system("pause");

return 0;

}

演算法步驟
建立乙個空表lc

依次從la或lb中「摘取」元素值較小的結點插入到lc表的最後,直至其中乙個表變空為止

繼續將la或lb其中乙個表的剩餘結點插入在lc表的最後

演算法描述
void combine(sqlist a, sqlist b, sqlist &c) 

else

}while (pa <= pa_last)

while (pb <= pb_last)

}

**
#includeusing namespace std;

\#define max 100

typedef struct

sqlist;

int initlist(sqlist &l)

l.length = 0;

return 1;

}void tr**elist(sqlist l)

printf("\n");

}void createlist(sqlist &l, int n)

}void combine(sqlist a, sqlist b, sqlist &c)

else

}while (pa <= pa_last)

while (pb <= pb_last) }

int main()

else

if (initlist(l2))

else

printf("請輸入l1的長度:");

int len1;

scanf("%d", &len1);

createlist(l1, len1);

printf("遍歷l1:\n");

tr**elist(l1);

printf("請輸入l2的長度:");

int len2;

scanf("%d", &len2);

createlist(l2, len2);

printf("遍歷表l2:\n");

tr**elist(l2);

sqlist l3;

combine(l1, l2, l3);

printf("合併後的表:\n");

tr**elist(l3);

system("pause");

return 0;

}

演算法步驟
lc指向la

依次從la或lb中「摘取」元素值較小的結點插入到lc表的最後,直至其中乙個表變空為止

繼續將la或lb其中乙個表的剩餘結點插入在lc表的最後

釋放lb表的表頭結點

演算法描述
void combine(linklist &l1, linklist &l2, linklist &l3) 

else

}pc->next = pa ? pa : pb; // 插入剩餘段

delete l2; // 釋放l2的頭結點

}

**
#include\#includeusing namespace std;

\#define max 100

typedef struct lnode

lnode, *linklist;

int initlist(linklist &l)

void tr**elist(linklist l)

printf("\n");

}void createlist(linklist &l, int n)

}void combine(linklist &l1, linklist &l2, linklist &l3)

else

}pc->next = pa ? pa : pb; // 插入剩餘段

delete l2; // 釋放l2的頭結點

}int main()

else

if (initlist(l2))

else

if (initlist(l3))

else

printf("請輸入l1的長度:");

int n1;

scanf("%d", &n1);

createlist(l1, n1);

printf("遍歷l1:\n");

tr**elist(l1);

printf("請輸入l2的長度:");

int n2;

scanf("%d", &n2);

createlist(l2, n2);

printf("遍歷l2:\n");

tr**elist(l2);

combine(l1, l2, l3);

printf("合併後的表:\n");

tr**elist(l3);

system("pause");

return 0;

}

第二章 線性表

定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...

第二章線性表

2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...

第二章 線性表

寫在前邊的話寫 好比寫詩,資料結構就好比唐詩三百首,熟讀並默寫這是基本功能,所以要閒的沒事可以在紙上多寫 線性表的定義和基本操作 線性表的實現 2.1順序儲存結構 2.2鏈式儲存結構 2.3線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...