静态链表

烧脑。。。

c源码:

//
// Created by cs on 2021/1/17.
//
#include <stdio.h>
#include "malloc.h"
#include "SLinkList.h"

void initSL(SLinkList space){
for(int i=0;i<MAXSIZE-1;i++){
space[i].data = -1;
space[i].cur = i + 1;
}
space[MAXSIZE-1].cur = 0;
}
int mallocSl(SLinkList space){
int i = space[0].cur;
if(space[0].cur){
space[0].cur = space[i].cur;
}
return i;
}
void freeSl(SLinkList space, int k){
space[k].cur = space[0].cur;
space[0].cur = k;
}
void difference(SLinkList space){
initSL(space);
int s = mallocSl(space);
int r = s;
int m = 3, n = 1;
//scanf("%d,%d",&m,&n);
for(int j = 1; j <= m; ++j){
int i = mallocSl(space);
scanf("%d",&space[i].data);
// space[i].data = 99+j;
space[r].cur = i;
r = i;
}
space[r].cur = 0;
for(int j = 1; j<= n; ++j){
int b;
scanf("%d",&b);
int p = s;
int k = space[s].cur;
while(k != space[r].cur && space[k].data != b){
p = k;
k = space[k].cur;
}
if(k == space[r].cur){
int i = mallocSl(space);
space[i].data = b;
space[i].cur = space[r].cur;
space[r].cur = i;
}else{
space[p].cur = space[k].cur;
freeSl(space,k);
if(r == k){
r = p;
}
}
}
}
int main(){
SLinkList sLinkList;
difference(sLinkList);
printf("hello \n");
}

头文件:

//
// Created by cs on 2021/1/17.
//
#define MAXSIZE 20
#define ElemType int
typedef struct {
ElemType data;
int cur;
}component, SLinkList[MAXSIZE];

需要的同仁可以参考一下。逻辑自己品吧。

发表评论

邮箱地址不会被公开。 必填项已用*标注