数据结构 静态链表的应用

举报
悦来客栈的老板 发表于 2020/12/30 00:35:24 2020/12/30
【摘要】 #include <stdio.h>#include <stdlib.h>#include <iostream.h> #define MAXSIZE 100#define OK 1#define ERROR 0#define OVERFLOW -2 typedef char ElemType; typedef struct{ Ele...

      #include <stdio.h>
      #include <stdlib.h>
      #include <iostream.h>
      #define MAXSIZE 100
      #define OK 1
      #define ERROR 0
      #define OVERFLOW -2
      typedef char ElemType;
      typedef struct
      {
      	ElemType  data;
     	int cur;
      }component, SLinkList[MAXSIZE];
      void InitSpace_SL(SLinkList &space)
      {
     	int i;
     	for (i=0; i<MAXSIZE-1; i++)
      	{
      		space[i].cur = i+1;
      	}
      	space[MAXSIZE-1].cur = 0;
      }
      int Malloc_SL(SLinkList &space)
      {
     	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)
      {
      	space[k].cur = space[0].cur;
      	space[0].cur = k;
      }
      void difference(SLinkList &space, int &S)
      {
     	int r,k,i,j,m,n,p;
     	char b;
      	InitSpace_SL(space);
      	S = Malloc_SL(space);
      	r = S;
     	scanf("%d%d",&m,&n);
     	for (j=1; j<=m; ++j)
      	{
      		i = Malloc_SL(space);
     		scanf("%d",&space[i].data);
      		space[r].cur = i;
      		r = i;
      	}
      	space[r].cur = 0;
     	for (j=1; j<=n; ++j)
      	{
     		scanf("%d",&b);
      		p = S;
      		k = space[S].cur;
     		while (k != space[r].cur && space[k].data != b)
      		{
      			p = k;
      			k = space[k].cur ;
      		}
     		if (k == space[r].cur )
      		{
      			i = Malloc_SL(space);
      			space[i].data = 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 print_SL(SLinkList space)
      {
     	int i = space[1].cur;
     	while (i)
      	{
     		printf("%d ",space[i].data);
      		i = space[i].cur;
      	}
     	printf("\n");
      }
      int main()
      {
      	SLinkList space;
     	int S;
      	difference(space, S);
      	print_SL(space);
     	return 0;
      }
  
 

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/17249013

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。