目錄2.7.2有序表的合併
2.鏈式有序表的合併
1、分別獲取la表長m和lb表長n2、從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線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...