데이터 구조 노트 - 순서 표 구현
9083 단어 데이터 구조
첫 번 째 편:
//system("cls");
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE];
int length;
}SeqList;
//
SeqList SeqListInit( )
{
SeqList L;
//cout<<" "<<endl;
L.length = 0;
return L;
}
//
SeqList ListClear(SeqList L)
{
L.length=0;
//cout<<" "<<endl;
return L;
}
//
int ListEmpty(SeqList L)
{
return (L.length==0);
}
//
int ListFull(SeqList L)
{
return (L.length==MAXSIZE);
}
//
int ListLength(SeqList L)
{
return L.length;
}
//
DataType ListGet(SeqList L ,int i)
{
if(i<0||i>L.length-1)
return -1;// , , -1
return L.data[i-1];// 0
}
//
int ListLocate(SeqList L, DataType x)
{
int i,mun = -1;
for(i = 0;i<L.length;i++)
{
if(L.data[i]==x)
{
mun = i;
}
}
if(mun==-1)
{
printf(" %d
",x);
return -1;
}
else
return mun+1;
}
//
SeqList ListInsert1(SeqList L,DataType x)
{
if(L.length==MAXSIZE)
printf(" ,
");// ,
L.length++;
L.data[L.length-1] = x;
return L;
}
SeqList ListInsert(SeqList L,int i,DataType x)
{
int j;
if(L.length>MAXSIZE)
printf(" ,
");// ,
for(j = L.length-1;j>=i;j--)
{
L.data[j] = L.data[j-1];
}
L.length++;
L.data[i-1] = x;
return L;
}
/* */
SeqList ListDelete(SeqList L,int i) //i , 1
{
int j;
if(i<1||i>L.length)
{
printf("
");// ,
return;
}
for(j = i;j<L.length;j++)
L.data[j-1] = L.data[j];
L.length--;
return L;
}
/* */
void ListPrior (SeqList L,DataType e)
{
DataType i,k = -1;
if(L.data[0] == e)
{
printf("
");
return ;//
}
for(i = 1;i<L.length;i++)
if(e == L.data[i])
k = i-1;
if(k==-1)
{
printf(" %d
",e);
return ;
}
else
printf(" %d %d
",e,L.data[k]);
}
/* */
void ListNext(SeqList L,DataType e)
{
DataType i,k = -1;
if(L.data[L.length-1] == e)
{
printf("
");//
return ;
}
for(i = 0;i<L.length-1;i++)
if(e == L.data[i])
k = i+1;
if(k==-1)
{
printf(" %d
",e);
return ;
}
else
printf(" %d %d
",e,L.data[k]);
}
// ( )
void Prinlist(SeqList L)
{
int i;
for(i = 0;i<L.length;i++)
printf("%d ",L.data[i]);
printf("
");
}
void mainScreen()
{
printf("
");
printf("0.
");
printf("1.
");
printf("2. , x
");
printf("3. , x , i
");
printf("4. i
");
printf("5.
");
printf("6.
");
printf("7.
");
printf("8.
");
printf("9. x , x
");
printf("10. i , i
");
printf("11. x , x
");
printf("12. x , x
");
printf("13.
");
printf("__________________________________________
");
}
int main()
{
int n,x,i,tem;
mainScreen();
SeqList L;
while(scanf("%d",&n)&&n!=0)
{
switch(n)
{
case 1: system("cls");
L = SeqListInit();
printf(" !!
");
//printf("
");
//scanf("%d",&temp);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 2: system("cls");
printf(" , x ");
scanf("%d",&x);
L = ListInsert1(L,x);
printf(" %d
",x);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 3: system("cls");
printf(" , x i ");
scanf("%d%d",&x,&i);
L = ListInsert(L,x,i);
printf(" %d
",x);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 4: system("cls");
printf(" i , i ");
scanf("%d",&i);
int tem = L.length;
L = ListDelete(L,i);
if(tem==L.length)
{
getchar();
getchar();
system("cls");
mainScreen();
continue;
}
else
{
printf("%d
",i);
getchar();
getchar();
system("cls");
mainScreen();
break;
}
case 5: system("cls");// empty
if(ListEmpty(L))
printf(" !!
");
else
printf(" !!
");
getchar();
getchar();
system("cls");
mainScreen();
break;
case 6: system("cls");// full
if(ListFull(L))
printf(" !!
");
else
printf(" !!
");
getchar();
getchar();
system("cls");
mainScreen();
break;
case 7: system("cls");
x = ListLength(L);
printf(" %d
",x);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 8: system("cls");
printf("
");
Prinlist(L);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 9 :system("cls");
printf(" x , x");
scanf("%d",&x);
i = ListLocate(L,x);
printf(" %d %d
",x,i );
getchar();
getchar();
system("cls");
mainScreen();
break;
case 10:system("cls");
printf(" i , i ");
scanf("%d",&i);
x = ListGet(L,i);
printf(" %d %d
",i,x);
getchar();
getchar();
system("cls");
mainScreen();
break;
case 11: system("cls");
printf(" x , x ");
scanf("%d",&x);
ListPrior(L,x);
getchar();
system("cls");
mainScreen();
break;
case 12:system("cls");
printf(" x , x ");
scanf("%d",&x);
ListNext(L,x);
getchar();
system("cls");
mainScreen();
break;
case 13:system("cls");
printf(" ");
L = ListClear(L);
printf(" ");
getchar();
system("cls");
mainScreen();
break;
default:printf("error");break;
}
}
return 0;
}