数据结构之静态链表
2015-10-07 09:05
399 查看
#include <iostream>
using namespace std;
#define MAXSIZE 1000
typedef struct DuLNode
{
char date;
int cur;
}component, SLinkList[MAXSIZE];
void InitSpace_SL(SLinkList&space)//将一维数组space中各分量连接成一个备用链表,space[0].cur为头指针
{
int i;
for (i = 0; i < MAXSIZE - 1; ++i)
space[i].cur = i + 1;
space[MAXSIZE - 1].cur = 0;
}
int MaLLoc_SL(SLinkList&space)//若备用空间链表非空,则返回分配的结点下标,否则返回0
{
int i;
i = space[0].cur;
if (space[0].cur)
space[0].cur = space[i].cur;
return i;
}
void free_SL(SLinkList&space, int k)//将下标为k的空闲结点回收到备用链表
{
space[k].cur = space[0].cur;
space[0].cur = k;
}
void difference(SLinkList&space, int &S)
{
int r;
InitSpace_SL(space);
S = MaLLoc_SL(space);
r = S;
int m, n;
cout << "请输入A和B元素的个数:" << endl;
cin >> m >> n;
int i, j;
cout << "请输入A的元素值:" << endl;
for (j = 1; j <= m; ++j)
{
i = MaLLoc_SL(space);
cin >> space[i].date;
space[r].cur = i;
r = i;
}
space[r].cur = 0;
int b, p, k;
cout << "请输入B的元素:" << endl;
for (j = 1; j <= n; ++j)
{
cin >> b;
p = S;
k = space[S].cur;
while (k != space[r].cur&&space[k].date != b)
{
p = k;
k = space[k].cur;
}
if (k == space[r].cur)
{
i = MaLLoc_SL(space);
space[i].date = b;
space[i].cur = space[r].cur;
space[r].cur = i;
}
else
{
space[p].cur = space[k].cur;
free_SL(space, k);
if (r == k) r = p;
}
}
}
void display(SLinkList &space,int &S)
{
int i;
i = S;
while (space[i-1].cur)
{
cout << space[i+1].date<<" ";
i++;
}
cout << endl;
}
int main()
{
SLinkList space;
InitSpace_SL(space);
int S;
difference(space, S);
display(space,S);
system("pause");
return 0;
}
using namespace std;
#define MAXSIZE 1000
typedef struct DuLNode
{
char date;
int cur;
}component, SLinkList[MAXSIZE];
void InitSpace_SL(SLinkList&space)//将一维数组space中各分量连接成一个备用链表,space[0].cur为头指针
{
int i;
for (i = 0; i < MAXSIZE - 1; ++i)
space[i].cur = i + 1;
space[MAXSIZE - 1].cur = 0;
}
int MaLLoc_SL(SLinkList&space)//若备用空间链表非空,则返回分配的结点下标,否则返回0
{
int i;
i = space[0].cur;
if (space[0].cur)
space[0].cur = space[i].cur;
return i;
}
void free_SL(SLinkList&space, int k)//将下标为k的空闲结点回收到备用链表
{
space[k].cur = space[0].cur;
space[0].cur = k;
}
void difference(SLinkList&space, int &S)
{
int r;
InitSpace_SL(space);
S = MaLLoc_SL(space);
r = S;
int m, n;
cout << "请输入A和B元素的个数:" << endl;
cin >> m >> n;
int i, j;
cout << "请输入A的元素值:" << endl;
for (j = 1; j <= m; ++j)
{
i = MaLLoc_SL(space);
cin >> space[i].date;
space[r].cur = i;
r = i;
}
space[r].cur = 0;
int b, p, k;
cout << "请输入B的元素:" << endl;
for (j = 1; j <= n; ++j)
{
cin >> b;
p = S;
k = space[S].cur;
while (k != space[r].cur&&space[k].date != b)
{
p = k;
k = space[k].cur;
}
if (k == space[r].cur)
{
i = MaLLoc_SL(space);
space[i].date = b;
space[i].cur = space[r].cur;
space[r].cur = i;
}
else
{
space[p].cur = space[k].cur;
free_SL(space, k);
if (r == k) r = p;
}
}
}
void display(SLinkList &space,int &S)
{
int i;
i = S;
while (space[i-1].cur)
{
cout << space[i+1].date<<" ";
i++;
}
cout << endl;
}
int main()
{
SLinkList space;
InitSpace_SL(space);
int S;
difference(space, S);
display(space,S);
system("pause");
return 0;
}
相关文章推荐
- 数据结构之单链表
- 数据结构之顺序表的操作
- 约瑟夫环(N个人围桌,C语言,数据结构)
- 数组实现约瑟夫循环
- 顺序查找
- 【数据结构】树形结构:二叉树&树
- 堆和栈的区别(转过无数次的文章)
- 图论&数据结构——并查集
- 【数据结构】线性结构:栈&队列&数组
- perl数据结构输出 Data::Dumper
- 微软等数据结构+算法面试100题全部答案集锦
- 微软公司等数据结构+算法面试100题(第1-100题)全部出炉
- 横空出世,席卷互联网--评微软等公司数据结构+算法面试100题
- 括号配对问题
- 【自考】时间复杂度—数据结构导论
- 第三章:数据结构与算法javascript描述: 列表
- 分治算法(思想)在数据结构中的应用
- 数据结构实践项目——队列
- 数据结构实践——队列数组
- 数据结构: Java中LinkedList的简单实现