文档介绍://-----------------【线性表的静态单链表存储结构】--------------------#include""#include""#defineMAXSIZE1000//链表的最大长度typedefstruct{floatdata;intcur;}component,SLinkList[MAXSIZE];//-------------------初始化静态链表---------------------------------voidInitSpace_SL(SLinkListspace){//将一维数组space中的各分量链成一个备用链表,space[0].cur为头指针,“0”表示空指针inti;for(i=0;i<MAXSIZE-1;i++){space[i].cur=i+1;}space[MAXSIZE-1].cur=0;}//-------------------取所分配结点的下标-----------------------------intMalloc_SL(SLinkListspace){//若备用链表非空,则返回分配结点的下标,否则返回0inti;i=space[0].cur;if(space[0].cur)space[0].cur=space[i].cur;returni;}//-------------------回收空闲结点-----------------------------------voidFree_SL(SLinkListspace,intk){//将下标为K的空闲结点回收到备用链表space[k].cur=space[0].cur;space[0].cur=k;}//-------------------定位运算---------------------------------------intLocateElem_SL(SLinkListspace,intS,floate){//在静态链表中寻找第一个值为e的元素。//若找到,则返回它在L中的位序,否则返回0inti;i=space[S].cur;while(i!=0&&(space[i].data<e)){i=space[i].cur;}returni;}//-------------------插入运算(头插法)-------------------------------intInsert_SL(intS,SLinkListspace){//S为静态链表中的头结点位置inti;i=Malloc_SL(space);if(i!=0){printf("请输入插入结点的值:");scanf("%f",&space[i].data);space[i].cur=space[S].cur;space[S].cur=i;}else{printf("备用链表为空结,点分配失败!\n");return0;}return1;}//-------------------删除运算---------------------------------------intDelete_SL(intS,SLinkListspace){intk,i,j,n;printf("请输入所要删除结点的位置:");scanf("%d",&k);j=0;i=S;while(j<k-1&&space[i].cur!=0){//寻找静态链表S中的第k-1个结点i=space[i].cur;}if(space[i].cur==0||j>k-1){printf("删除位置不合适!\n");return0;}else{n=space[i].cur;//不可少space[i].cur=space[space[i].cur].cur;//Free_SL(space,space[i].cur);错误,这样会把K点之后的点回收Free_SL(space,n);}return1;}//-------------------建立静态链表(尾插法)---------------------------intCreate_SL(SLinkListspace){intA,r,j;//InitSpace_SL(space);不能在这初始化A=Malloc_SL(space);r=A;j=Malloc_SL(space);printf("请输入链表各结点的值并以0做为结束标志:\n");scanf("%f",&space[j].data);while(space[j].data){//以输入的数据为0做为结束标志space[r].cur=j;r=j;j=Malloc_SL(space);scanf("%f",&space[j