정적 링크 의 기본 동작

6121 단어 데이터 구조
0. 매크로 정의 및 정적 링크 노드 구조 체
#include
#include
#include
using namespace std;


#define MAXSIZE 1000
#define OK 0
#define error 1 
typedef int Status;
typedef int ElemType;

//        
typedef struct component
{
    ElemType data;//   
    int cur;      //  (cursor) 
}component,StaticList[MAXSIZE];



1
Status  InitList(StaticList space)
{
    int i;
    for(i=0;i1;
    space[MAXSIZE-1].cur=0;//             0 

    return OK;

}

2. 포 지 셔 닝 요소
//             
//            ,      0 
Status LocateElem (StaticList S,ElemType e)
{
    i=S[MAXSIZE-1].cur;
    while(i&&S[i].data!=e)
    i=S[i].cur;
    return i;   
} 

3. 예비 링크 에 공간 신청
//               ,               (                )
//             ,                 
Status Malloc_SLL(StaticList space)
{
    int i=space[0].cur;
    if(i)//       space[0].cur  0 
    {
        space[0].cur=space[i].cur;
    }
    return i;
} 

4. 정적 링크 의 요소 개 수 를 가 져 옵 니 다.
int ListLength(StaticList L)
{
    int k=MAXSIZE-1;
    k=L[k].cur;
    int i=0;
    while(k!=0)
    {
       i++;
       k=L[k].cur;

    }
    return i;
} 

5. 요소 삽입
Status ListInsert(StaticList L, int i,ElemType e)
{
    int j,k,i;//          
    k=MAXSIZE-1;//                             
    if(i)(i<1||i>ListLenth(L)+1)
    {
        return error;
    } 
    j=malloc(L);
    if(j)
    { 
        L[j].data=e;
        for(i=1;i<1;i++)
        {
            k=L[k].cur;
        }//     k              
        L[j].cur=L[k].cur;
        L[k].cur=j;//           
        //  : n 1    L[MAX-1]       
        return OK; 
    } 
    return error;
} 

6 、 원소 하 나 를 삭제
void free_SL(StaticList &L, int k)
 {
    //    k             
    L[k].cur=L[0].cur;//           
    L[0].cur=k; 
 } 

 Status delete_SL(StaticList &L,int n)
 {
    int i,j,k;
    if(n<1||n>ListLength(L)+1)
    return error;

    k=MAXSIZE-1;
    for(i=0;i1;i++)
    k=L[k].cur;//     k                 

    j=L[k].cur;//         

    L[k].cur=L[j].cur;//           
    free_SL(L,j);

    return OK; 
     }

7. 선형 표 옮 겨 다 니 기
int visit(ElemType e); 

Status Taverse(StaticList L,int(*f)(ElemType e))
{
    int k=MAXSIZE-1;
    k=L[k].cur;
    while(k)
    {
      f(L[k].data);
      k=L[k].cur;
    }
    return 0;
}


int visit(ElemType e)
{
    printf("%d
"
,e); return 0; }

좋은 웹페이지 즐겨찾기