怎样计算单向链表长度得算法啊?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 12:07:40
怎样计算单向链表长度得算法啊?
怎样计算单向链表长度得算法啊?
怎样计算单向链表长度得算法啊?
这是本人以前写的单链表的基本操作,自己看吧
// 静态单链表.cpp :Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 1000
#define OK 1
#define ERROR 0;
typedef int ElemType;
typedef struct{
ElemType data;
int cur;
}component,SLinkList[MAXSIZE];
int InitSpace_SL(SLinkList *space)
{
for(int i=0;icur=i+1;
space[MAXSIZE-1]->cur=0;
return OK;
}
int Malloc_SL(SLinkList *space)
{
int i=space[0]->cur;
if(space[0]->cur) space[0]->cur=space[i]->cur;
return i;
}
int Free_SL(SLinkList *space,int i)
{
space[i]->cur=space[0]->cur ;
space[0]->cur=i;
return OK;
}
int Length_SL(SLinkList *space,int head)
{
int length=0,k=head;
while(space[k]->cur){
k=space[k]->cur;
length++;
}
return length;
}
int GetElem_SL(SLinkList *space,int head,int i)
{
if(iLength_SL(space,head)){
printf("i的取值范围不合法!\n");
return ERROR;
}
int k=head;
int j=0;
while(space[k]->cur&&(jcur;
}
if(j==i) return k;
}
int Insert_SL(SLinkList *space,int head,ElemType e,int i)
{
if((iLength_SL(space,head)+1)){
printf("i的取值范围不合法!");
return ERROR;
}
if(!space[0]->cur){
printf("链表的存储空间已满!");
return ERROR;
}
int m=GetElem_SL(space,head,i-1);
int k=Malloc_SL(space);
space[k]->data=e;
space[k]->cur=space[m]->cur;
space[m]->cur=k;
return OK;
}
int Delete_SL(SLinkList *space,int head,ElemType *e,int i)
{
if((iLength_SL(space,head))){
printf("i的取值范围不合法!");
return ERROR;
}
if(!space[head]->cur){
printf("链表为空!");
return ERROR;
}
int p=GetElem_SL(space,head,i);
int k=GetElem_SL(space,head,i-1);
*e=space[p]->data;
space[k]->cur=space[p]->cur;
Free_SL(space,p);
return OK;
}
int OutputSL(SLinkList *space,int head)
{
int k=space[head]->cur;
while(k){
printf("%d ",space[k]->data);
k=space[k]->cur;
}
printf("\n");
return OK;
}
int _tmain(int argc,_TCHAR* argv[])
{
SLinkList *space=NULL;
space=(SLinkList *)malloc(MAXSIZE*sizeof(SLinkList));
InitSpace_SL(space);
int head;
head=Malloc_SL(space);
space[head]->cur=0;
ElemType data[5]={1,2,3,4,5};
for(int i=0;i