⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 functions.c

📁 这是有关数据结构的例程序
💻 C
字号:
#include<stdio.h>
#include"definition.h"

void Init(component *L)//初始化静态链表
{
	unsigned short i;

	for(i=0; i<MAXSIZE-1; i++)
		L[i].cur=i+1;
	L[MAXSIZE-1].cur=0;
}

component* Insert(component *L)//插入数据到链表
{
	component *T, *temp1, *temp2;
	unsigned short i;
	ElemType ch;

	if( i=Malloc(L) ){
		T=temp1=&L[i];
		T->cur=0;
	}
	else
		return 0;	
	while( (ch=getchar()) != '\n' ){
		if( i=Malloc(L) ){
			temp2=&L[i];
			temp2->data=ch;
			temp2->cur=0;
			temp1->cur=i;
			temp1=temp2;
		}
		else
			return 0;
	}

	return T;
}

short Malloc(component *L)//分配空间
{
	unsigned short i;

	i=L[0].cur;
	if(L[0].cur){
		L[0].cur=L[i].cur;
		return i;//成功返回空间位置
	}

	return 0;//失败返回0
}

void Free(component *L, short i) //回收空间
{
	L[i].cur=L[0].cur;
	L[0].cur=i;
}

void Disp(component *T, component *L)//显示静态链表数据
{
	while(T->cur){
		T=&L[T->cur];
		printf("%c", T->data);
	}
	printf("\n");
}

void Purge(component *T, component *L) //删除重复数据
{
	component *tmp, *temp;

	for(T=&L[T->cur]; T->data; T=&L[T->cur]){//若T->data中没数据,则退出循环
		for(temp=T, tmp=&L[T->cur]; tmp->data;){//若tmp->data中没数据,则退出循环
			if(T->data==tmp->data){
				temp->cur=tmp->cur;
				Free(L, (short)(tmp-L));//回收空间
				tmp=&L[temp->cur];
			}
			else{
				tmp=&L[tmp->cur];
				temp=&L[temp->cur];
			}
		}
	}
}

void Union(component *A, component *B, component *L)//(A-B)交(B-A)
{
	component *T, *ta, *tb=B;
	short flag;//用于判断是否进行了删除操作

	B=&L[B->cur];
	while(B->data){//循环判断,直到B表中所有数据都和A表比较过后才结束
		ta=T=A;
		flag=1;//1代表没有进行删除
		while(T->cur){//循环判断,直到A表中所有数据都和B->data比较过后才结束
			T=&L[T->cur];
			if(T->data==B->data){//如果相等,则删除
				ta->cur=T->cur;
				Free(L, (short)(T-L));
				T=&L[ta->cur];
				tb->cur=B->cur;
				Free(L, (short)(B-L));
				B=&L[tb->cur];
				flag=0;//1代表进行了删除
				break;
			}
			else//不相等则把指针移动到一个数据
				ta=&L[ta->cur];
		}
		if(flag){//如果没有进行删除操作,则连接两个结点
			T->cur=tb->cur;
			tb->cur=B->cur;
			B->cur=0;
			B=&L[tb->cur];
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -