데이터 구조 실험 1 - 순서표 - 각종 조작

요구 사항:
두 개의 순서표를 만들어서 두 개의 순서표의 합병과 확장, 그리고 한 개의 순서표의 검색, 삽입, 삭제, 정렬, 비우기, 삭제, 선구자와 후계 찾기 등을 실현한다.
(잘못이 있으면 계속 고친다)
프로그램의 완비성, 건장성, 가독성 등
이번 실험을 통해 내가 가장 많이 쓴 것은 프로그램이 아니라 프로그램 집행자에게 다음에 어떻게 선택해야 할지 알려주는 것 같아...(지난 학기 c 언어 과정 설계의 발걸음)
#include 
#include
#include
#include
#include
#define MAXSIZE 100
#define INCREMENT 20
using namespace std;
typedef int status;
char str[10];
int n1,n2,rec;
typedef struct
{
    int *elem;
    int len;
    int lise;
}sqlist;
sqlist sq1,sq2,sq3;
status initlist(sqlist &l)
{
    l.elem=(int *)malloc(sizeof(sqlist)*MAXSIZE);
    if(!l.elem)
        return 0;
    l.len=0;
    l.lise=MAXSIZE;
    return 1;
}
void getsq(int n,sqlist &l)//        
{
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&l.elem[i]);
        l.len++;
    }
}
void destorylist(sqlist &l)//     
{
    if(l.elem)
        delete []l.elem;
}
void clearlist(sqlist &l)//     
{
    l.len=0;
}
status listempty(sqlist &l)//         
{
    if(l.len==0)
    {
        return true;
    }
    return false;
}
status listlength(sqlist l)//            
{
    return l.len;
}
status getelem(sqlist l,int i,int &e)//       i   
{
    if(i<=0||i>l.len)
    {
        return -1;
    }
    e=l.elem[i];
    return 1;
}
status locatelem(sqlist l,int e)//      e          
{
    for(int i=1;i<=l.len;++i)
    {
        if(l.elem[i]==e)
            return i;
    }
    return -1;
}
status priorelem(sqlist l,int cur,int &pre)//             
{
    for(int i=1;i<=l.len;++i)
    {
        if(l.elem[i]==cur)
        {
            pre=l.elem[i-1];
            return 1;
        }
    }
    return -1;
}
status nextelem(sqlist l,int cur,int &next)//             
{
    for(int i=1;i<=l.len;++i)
    {
        if(l.elem[i]==cur)
        {
            next=l.elem[i+1];
            return 1;
        }
    }
    return -1;
}
void listinsert(sqlist &l,int i,int e)//     i        
{
    for(int j=l.len;j>=i;j--)
    {
        l.elem[j+1]=l.elem[j];
    }
    l.elem[i]=e;
    l.len++;
}
status listdelete(sqlist &l,int i,int &e)//      i         
{
    if(i<=0||i>l.len)
        return -1;
    e=l.elem[i];
    for(int j=i+1;j<=l.len;++j)
    {
        l.elem[j-1]=l.elem[j];
    }
    l.len--;
    return 1;
}
void traverselist(sqlist l)//          
{
    for(int i=1;i<=l.len;++i)
    {
        if(i==1)
            printf("%d",l.elem[i]);
        else
            printf(" %d",l.elem[i]);
    }
    printf("
"); } void sortlist(sqlist &l) { for(int i=1;il.elem[j]) { int tem=l.elem[i]; l.elem[i]=l.elem[j]; l.elem[j]=tem; } } } printf("
"); } status kuorong(sqlist &l) { int c; printf(" 1 0
"); scanf("%d",&c); if(c==1) { int *newbase=(int *)realloc(l.elem,(l.lise+INCREMENT)*sizeof(sqlist)); if(!newbase) { printf("
"); return 0; } return 1; } else return 0; } status mergelist(sqlist l1,sqlist l2,sqlist &l3) { if(l3.lise

좋은 웹페이지 즐겨찾기