?? algo2-9.cpp
字號:
// algo2-9.cpp 盡量采用bo2-32.cpp中的基本操作實現算法2.17的功能
#include"c1.h"
#define N 2
typedef char ElemType;
#include"c2-3.h"
#include"bo2-3.cpp"
#include"bo2-32.cpp"
void visit(ElemType c)
{
printf("%c ",c);
}
int difference(SLinkList space) // 改進算法2.17(盡量利用基本操作實現)
{ // 依次輸入集合A和B的元素,在一維數組space中建立表示集合(A-B)∪(B-A)
// 的靜態鏈表,并返回其頭指針。假設備用空間足夠大,space[0].cur為備用空間的頭指針
int m,n,i,j,k,S;
ElemType b,c;
InitSpace(space); // 初始化備用空間
S=InitList(space); // 生成鏈表S的頭結點
printf("請輸入集合A和B的元素個數m,n:");
scanf("%d,%d%*c",&m,&n); // %*c吃掉回車符
printf("請輸入集合A的元素(共%d個):",m);
for(j=1;j<=m;j++) // 建立集合A的鏈表
{
scanf("%c",&b); // 輸入A的元素值
ListInsert(space,S,j,b); // 插入到表尾
}
scanf("%*c"); // 吃掉回車符
printf("請輸入集合B的元素(共%d個):",n);
for(j=1;j<=n;j++)
{ // 依次輸入B的元素,若不在當前表中,則插入,否則刪除
scanf("%c",&b);
k=LocateElem(space,S,b); // k為b的位序
if(k) // b在當前表中
{
PriorElem(space,S,b,c); // b的前驅為c
i=LocateElem(space,S,c); // i為c的位序
space[i].cur=space[k].cur; // 將k的指針賦給i的指針
Free(space,k); // 將下標為k的空閑結點回收到備用鏈表
}
else
ListInsert(space,S,ListLength(space,S)+1,b); // 在表尾插入b
}
return S;
}
void main()
{
int k;
SLinkList s;
k=difference(s);
ListTraverse(s,k,visit);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -