선형 표 | 배열

헤더 파일
#ifndef _SQLIST_FUNC_H_
#define _SQLIST_FUNC_H_

#define MAXSIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int ElemType;
typedef int status;

//   
typedef struct
{
    ElemType data[MAXSIZE];
    int      length;
    int      size ;
}sqlist;

//    
status get_element(sqlist l,int i,ElemType *e);
status insert_element(sqlist *l,int i,ElemType e);
status delete_element(sqlist *l,int i,ElemType *e);

#endif

기능 함수
  • 원소 획득
  • /*func:Gets the linear table element.
      para:
            l:linear table
            i:Get the i element
            e:Use e return element
      return:
            success:OK
            fail:ERROR
    */
    status get_element(sqlist l,int i,ElemType *e)
    {
        if(l.length == 0 || i < 1 || i > l.length)
        {
            return ERROR;
        }
    
        *e = l.data[i-1];
    
        return OK;
    }
    
  • 특정한 위치 에 요 소 를 삽입 합 니 다
  • /*func:Inserts an element into a linear table before i position.
      para:
            l:linear table
            i:Insertion position.
            e:The element to be inserted.
      return:
            success:OK
            fail:ERROR
    */
    status insert_element(sqlist *l,int i,ElemType e)
    {
        int                 k = 0;
    
        if(!l || l->length >= l->size || i > l->size || i < 1)
        {
            return ERROR;
        }
    
        for(k = l->length-1;k >= i-1;k--)
        {
            l->data[k+1] = l->data[k];
        }
        l->data[i-1] = e;
        l->length++;
        return OK;
    }
    
  • 특정한 요 소 를 삭제 합 니 다
  • /*func:Delete an element into a linear table.
      para:
            l:linear table
            i:delete position.
            e:The element to be deleted.
      return:
            success:OK
            fail:ERROR
    */
    status delete_element(sqlist *l,int i,ElemType *e)
    {
        int                 k = 0;
        if(!l || i < 1 || i > l->length)
        {
            return ERROR;
        }
    
        *e = l->data[i-1];
        for(k = i-1;k < l->length;k++)
        {
            l->data[k] = l->data[k+1];
        }
        l->length--;
    
        return  OK;
    }
    

    좋은 웹페이지 즐겨찾기