Exemple #1
0
int main(int argc, char *argv[])
{
    int i,j;
    ElemType e;
    SqList L;
    SqList La, Lb;
    InitList(&L);
    InitList(&La);
    InitList(&Lb);

    /* now let's test each function */
    /* make a sqlist */
    print_top_stars(32);
    printf("Now let's enter some thing to the sqlist.\n");
    printf("How many elements do you want to input? \n");
    scanf("%d", &i);
    printf("Please enter %d values(user Enter to commit).\n", i);
    for (j = 0; j < i; ++j) {
	scanf("%d", &e);
	ListInsert(&L, j+1, e);
	if (j != i-1)
	    printf("Please enter next value:\n");
    }
    printf("Here is your sqlist:\n");
    ListTraverse(L);
    print_bot_stars(32);

    /* demo insert function */
    print_top_stars(32);
    printf("Please choose a position to insert: ");
    scanf("%d", &i);
    while (i < 1 || i > L.length) {
	printf("Warning: wrong position\n");
	scanf("%d", &i);
    };
    printf("Enter the instert value: ");
    scanf("%d", &e);
    ListInsert(&L, i, e);
    printf("Now the length of L is %d.\n", L.length);
    printf("The content of sqlist are: \n");
    ListTraverse(L);
    print_bot_stars(32);

    /* demo delete function */
    print_top_stars(32);
    printf("Please choose a position to delete: \n");
    scanf("%d", &i);
    while (i < 1 || i > L.length) {
	printf("Warning: wrong position\n");
	scanf("%d", &i);
    }
    ListDelete(&L, i, &e);
    printf("Now the length of L is %d.\n", L.length);
    printf("The content of sqlist are: \n");
    ListTraverse(L);
    print_bot_stars(32);

    /* demo locate function */
    print_top_stars(32);
    printf("This check if the value you enter in the sqlist,\n");
    printf("if in the sqlist return the position.\n");
    printf("Enter the value: \n");
    scanf("%d", &e);
    if (LocateElem(L, e) != 0) {
	printf("The position of %d is %d.\n", e, LocateElem(L, e));
    } else {
	printf("The value you enter is not in the sqlist.\n");
    }
    print_bot_stars(32);

    /* demo union sqlist */
    print_top_stars(32);
    printf("This test will union two sqlist, ");
    printf("now let's make another list.\n");
    La = L;
    printf("How many values do you want in it?\n");
    scanf("%d", &i);
    printf("Please enter %d values(user Enter to commit).\n", i);
    for (j = 0; j < i; j++) {
	scanf("%d", &e);
	ListInsert(&Lb, j+1, e);
	if (j != i - 1)
	    printf("Please enter next value:\n");
    }
    printf("Now the length of Lb is %d.\n", Lb.length);
    printf("The content of sqlist are: \n");
    ListTraverse(Lb);
    printf("Union Two sqlist now:\n");
    unionL(&La, Lb);
    ListTraverse(La);
    
    return 0;
}
int main()
{

    SqList L;
	SqList Lb;

    ElemType e;
    Status i;
    int j,k;
    i=InitList(&L);
    printf("初始化L后:L.length=%d\n",L.length);
    for(j=1;j<=5;j++)
            i=ListInsert(&L,1,j);
    printf("在L的表头依次插入1~5后:L.data=");
    ListTraverse(L);

    printf("L.length=%d \n",L.length);
    i=ListEmpty(L);
    printf("L是否空:i=%d(1:是 0:否)\n",i);

    i=ClearList(&L);
    printf("清空L后:L.length=%d\n",L.length);
    i=ListEmpty(L);
    printf("L是否空:i=%d(1:是 0:否)\n",i);

    for(j=1;j<=10;j++)
            ListInsert(&L,j,j);
    printf("在L的表尾依次插入1~10后:L.data=");
    ListTraverse(L);

    printf("L.length=%d \n",L.length);

    ListInsert(&L,1,0);
    printf("在L的表头插入0后:L.data=");
    ListTraverse(L);
    printf("L.length=%d \n",L.length);

    GetElem(L,5,&e);
    printf("第5个元素的值为:%d\n",e);
    for(j=3;j<=4;j++)
    {
            k=LocateElem(L,j);
            if(k)
                    printf("第%d个元素的值为%d\n",k,j);
            else
                    printf("没有值为%d的元素\n",j);
    }


    k=ListLength(L); /* k为表长 */
    for(j=k+1;j>=k;j--)
    {
            i=ListDelete(&L,j,&e); /* 删除第j个数据 */
            if(i==ERROR)
                    printf("删除第%d个数据失败\n",j);
            else
                    printf("删除第%d个的元素值为:%d\n",j,e);
    }
    printf("依次输出L的元素:");
    ListTraverse(L);

    j=5;
    ListDelete(&L,j,&e); /* 删除第5个数据 */
    printf("删除第%d个的元素值为:%d\n",j,e);

    printf("依次输出L的元素:");
    ListTraverse(L);

	//构造一个有10个数的Lb
	i=InitList(&Lb);
    for(j=6;j<=15;j++)
            i=ListInsert(&Lb,1,j);

	unionL(&L,Lb);

	printf("依次输出合并了Lb的L的元素:");
    ListTraverse(L);

    return 0;
}
Exemple #3
0
int main ()
{
	sqList L;
	ElemType e;
	Status i;
	int j,k;
	
	i=InitList(&L);
	
	printf("[init]L.length=%d\n",L.length);
	
	for (j=1; j<=5; j++) {
		i=ListInsert(&L, 1, j);
	}
	printf("[insert]L.data=");
	
	ListTraverse(L);
	
	printf("L.length=%d\n",L.length);
	
	i=ListEmpt(&L);
	printf("is L empty:%d\n",i);
	printf("what is the length :%d\n",L.length);
	
	i=ClearList(&L);
	printf("[clear]L.length=%d\n",L.length);
	
	i=ListEmpt(&L);
	printf("is L empty:%d\n",i);
	
	//---------------------------
	for(j=1;j<=10;j++)
		ListInsert(&L,j,j);
    printf("在L的表尾依次插入1∼10後:L.data=");
    ListTraverse(L);
	
    printf("L.length=%d \n",L.length);
	
    ListInsert(&L,1,0);
    printf("在L的表頭插入0後:L.data=");
    ListTraverse(L);
    printf("L.length=%d \n",L.length);
	
    GetElem(L,5,&e);
    printf("第5個元素的值為:%d\n",e);
    for(j=3;j<=4;j++)
    {
		k=LocateElem(L,j);
		if(k)
			printf("第%d個元素的值為%d\n",k,j);
		else
			printf("沒有值為%d的元素\n",j);
    }
    
	
    k=ListLength(L); /* k為表長 */
    for(j=k+1;j>=k;j--)
    {
		i=ListDelete(&L,j,&e); /* 刪除第j個資料 */
		if(i==ERROR)
			printf("刪除第%d個資料失敗\n",j);
		else
			printf("刪除第%d個的元素值為:%d\n",j,e);
    }
    printf("依次輸出L的元素:");
    ListTraverse(L);
	
    j=5;
    ListDelete(&L,j,&e); /* 刪除第5個資料 */
    printf("刪除第%d個的元素值為:%d\n",j,e);
	
    printf("依次輸出L的元素:");
    ListTraverse(L);
	
	//構造一個有10個數的Lb
	sqList Lb;
    i=InitList(&Lb);
    for(j=6;j<=15;j++)
		i=ListInsert(&Lb,1,j);
	
    printf("輸出Lb的內容:");
	ListTraverse(Lb);
	
	
	unionL(&L,Lb);
    printf("依次輸出合併了Lb的L的元素:");
    ListTraverse(L);
    return 0;
}