c语言数据结构之顺序表静态链表的创建及功能函数
2016-11-03 21:16
309 查看
#include "stdio.h" #include "stdlib.h" #define ERROR 0 #define OK 1 #define FALSE 0 #define TRUE 1 #define MAXSIZE 1000 typedef int ElemType ; typedef int Status ;
/创建一个静态链表/
typedef struct { ElemType data; int cur; }Component,StaticLinkList[MAXSIZE];
//数组的第一个元素和最后一个元素作为特殊元素处理,不存数据
//未被使用的数组元素称为备用链表,数组的第一个元素(下标为0的元素)存放第一个备用链表的下标。
//而数组最后一个元素的cur则存放第一个有数值元素的下标,相当于单链表的头结点
/初始化一个静态链表***/
Status InitStaticLinkList(StaticLinkList space) { int i; for(i=0;i<MAXSIZE-1;i++) { space[i].cur = i+1; } space[MAXSIZE-1].cur = 0; return OK ; }
/若备用空间的链表非空,则返回分配的结点下标给e,否则返回0*****/
Status Malloc(StaticLinkList L,int *e) { int i; i = L[0].cur;//将第一个备用链表的地址赋值给i if(L[0].cur) { L[0].cur = L[i].cur; } *e = i; return OK ; }
/返回静态链表L的长度[b]*[/b]/
Status LengthList(StaticLinkList L) { int j = 0; int i = L[MAXSIZE - 1].cur ; while (i) { i = L[i].cur; j++; } return j; }
/在静态链表L中的第i个位置插入元素e****/
Status InsertLinkList(StaticLinkList L,int i,ElemType e) { int k,j,ee,ii; k = MAXSIZE -1; if(i<1||i>LengthList(L)+1) { return ERROR; } Malloc(L,&ee);//获取空闲分量的下标 j=ee; if(j) { L[j].data = e; for(ii=1;ii<=i-1;++ii)//找到第i个元素之前的位置 { k = L[k].cur; } L[j].cur = L[k].cur; L[k].cur = j; return ERROR; } }
/释放内存函数/
Status Free(StaticLinkList L,int i) { L[i].cur = L[0].cur; L[0].cur = i; }
/把静态链表L的第i个位置的元素删掉,并返回给e*******/
Status DeleteLinkList(StaticLinkList L,int i,ElemType *e) { int k = MAXSIZE -1; int j; if(i<1||i>LengthList(L))//待删除元素的下标范围是否正确 { return ERROR; } for(j = 1;j<=i-1;++j) { k = L[k].cur; } *e = L[i].data ; j = L[k].cur ; L[k].cur = L[j].cur; Free(L,j); return OK; }
/主函数/
int main() { StaticLinkList L; int length=0; ElemType e; InitStaticLinkList(L); InsertLinkList(L,1,3); printf("静态链表的第1个元素的数据域存放的是:%d\n",L[1].data); length = LengthList(L); printf("静态链表L内一共有 %d 个元素\n",length ); DeleteLinkList(L,1,&e); printf("静态链表中的%d被删除\n",e); system("pause"); return 0; }
相关文章推荐
- c语言数据结构之顺序表单链表的创建及功能函数
- c语言数据结构之顺序表单循环链表的创建及功能函数
- (单向链表)数据结构的创建和功能函数(C语言)
- c语言数据结构线性表之顺序表功能函数
- 数据结构:线性表(顺序存储)顺序表类(实现顺序表的创建,输出,插入,删除功能)
- 数据结构——顺序表的创建及功能函数
- 数据结构:线性表(顺序存储)顺序栈类(实现创建,输出,入栈出栈,读栈顶元素功能)
- C语言中函数参数的入栈顺序
- MFC应用程序中处理消息的顺序,创建窗口的过程关闭窗口的顺序(非模态窗口),打开模式对话框的函数调用顺序
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- 【汇编】命令行下获取用户输入,实现类似C语言fgets函数功能
- C语言中函数参数的入栈顺序
- MFC应用程序中处理消息,创建窗口的过程,关闭窗口(非模态窗口),打开模式对话框等的函数调用顺序
- MFC创建和销毁窗口时,各个函数的调用顺序
- MFC对话框创建和销毁窗口时,函数的调用顺序
- C语言中函数参数的入栈顺序
- C语言中函数memset(),memcpy()和strchr()的功能和用法
- 创建和销毁过程几个函数的执行顺序