데이터 구조 노트 - 순서 표 구현

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; }

좋은 웹페이지 즐겨찾기