int main() {
	SqList sq_First,sq_Second,sq_Result;
	ElemType *ptr = NULL;
	ElemType elem;
	InitList_Sq(sq_First);
	InitList_Sq(sq_Second);
	InitList_Sq(sq_Result);
	int i,j,r,loop,loopLength,num;
	scanf("%d",&num);
	printf("%d",num);
	for (i = 1; i < (num+1); i++) {
		scanf("%d",&elem);
		ListInsert_Sq(sq_First,i,elem);
	}
	scanf("%d", &num);
	for (i = 1; i < (num + 1); i++) {
		scanf("%d", &elem);
		ListInsert_Sq(sq_First, i, elem);
	}
	i = 1;//sq_First的第一个元素
	j = 1;//sq_Second的第一个元素
	r = 1;//初始化sq_Result的位置
	while (i<=sq_First.length||j<=sq_Second.length) {
		if (sq_First.elem[i] >= sq_Second.elem[j]) {
			ptr = &sq_Second.elem[j];//拿到小元素的地址
			j++;
		}
		else {
			ptr = &sq_Second.elem[i];//拿到小元素的地址
			i++;
		}
		ListInsert_Sq(sq_Result,r,*ptr);
		r++;
	}
	//判断是哪一个结束
	//第一个结束
	if (i > sq_First.length) {
		loop = j;
		loopLength = sq_Second.length;
		ptr = sq_Second.elem;
	}
	//第二个结束
	else {
		loop = i;
		loopLength = sq_First.length;
		ptr = sq_First.elem;
	}
	//将未结束的插入sq_Result
	for (; loop <= loopLength; loop++) {
		ListInsert_Sq(sq_Result, r, *ptr);
		r++;
		ptr++;
	}
	Load_Sq(sq_First);
	Load_Sq(sq_Second);
	Load_Sq(sq_Result);
}
Пример #2
0
//对顺序链表各个功能函数的测试
void SqLsitTest()
{

	int i;
	int a[5]={1,2,3,5,8};
	int b[5]={4,6,8,9,0};
	ElemType temp;
	

	SqList La,Lb,Lc;

	InitList_Sq( La );
	InitList_Sq( Lb );
	InitList_Sq( Lc );

	for ( i=1;i< 6; i++)
		ListInsert_Sq( La,i,a[i-1]);
	for ( i=1;i< 6; i++)
		ListInsert_Sq( Lb,i,b[i-1]);

	//ListDelete_Sq( &Lb, 4, delet );
	//printf("\n the delete is: %d \n", delet);
	
	for(i=0;i <5; i++)
	{
		printf( "addr:%p, value: %d   ",&(La.elem[i]),La.elem[i]);
		printf( "addr:%p, value: %d\n",&(Lb.elem[i]),Lb.elem[i]);
		//printf( "addr:%p,   value: %d\n", (a+i),a[i]);
	    //printf( "addr:%d,   value: %d\n", (a+i),a[i]);
	}

	MergeList_sq( La, Lb, Lc);
	printf("\n===========The Sq_List_c is =========\n");
	for(i=0;i <10; i++)
	printf( " addr:%p, value: %d  \n",&(Lc.elem[i]),Lc.elem[i]);

	if ( ListDelete_Sq( Lc,4,temp) == 1 )
	{
		printf("\n==========The Delete Sq_List_c is==========\n");
		for(i=0;i <9; i++)
		printf( " addr:%p, value: %d  \n",&(Lc.elem[i]),Lc.elem[i]);

		printf("the delet element is : %d\n",temp);
	}
	
	 i = LocateElem_Sq(Lc,6,compare) ;
	 printf("\nthe Locate element is the :%d\n ", i);

}
Пример #3
0
void mian()
{
	int delet;

	SqList La,Lb,Lc;
	InitList_Sq( La );
	InitList_Sq( Lb );
	InitList_Sq( Lc );
	La.elem = { 1,2,3,4,5};
	Lb.elem = { 6,7,8,9,0};

	ListDelete_Sq( &Lb, 4, delet );
	printf("\n the delete is: %d \n", delet);


}
Пример #4
0
int main()
{
	int i;
	SqList L;
	int get,e;
    InitList_Sq(&L);
	printf("请输入你要进行的操作序号\n");
	printf("1.线性表置空\n");
	printf("2.求线性表长度\n");
	printf("3.数据元素的插入操作\n");
	printf("4.数据元素的删除操作\n");
	printf("5.显示线性表中的全部元素\n");
	scanf("%d",&get);
	switch(get)
	{
	case 1: 
          destroy(*L);
	case 2:
          get_length(*L);
	case 3:
		  ListInsert_Sq(*L,5,10);
		  printf("");
	case 4:
          ListDelete_Sq(*L,5,&e);
	}
    return OK;
}
Пример #5
0
int main()
{
    printf("int类型的大小=%d\n",sizeof(int));
    SqList L;
    InitList_Sq(&L);
    ListInsert_Sq(&L,1,1);
    ListInsert_Sq(&L,1,2);
    ListInsert_Sq(&L,1,3);
    ListInsert_Sq(&L,1,4);
    ListInsert_Sq(&L,1,5);
    GetListM_Sq(L);

}
Пример #6
0
void main()

{
SqList la,lb,lc,ld;
int i,j;
Elemtype e;
 InitList_Sq(la);
CreateList(la);
print(la);
printf("请输入要查找的元素:\n");
scanf("%d",&e);
j=location(la,e);
printf("该元素的位置为%d\n",j);

printf("请输入要插入的位置和元素:\n");
scanf("%d%d",&i,&e);

ListInsert_Sq(la,i,e);
printf("输出插入后的顺序表:\n");
print(la);
printf("请输入要删除的位置:\n");
scanf("%d",&i);
ListDelect_Sq(la,i,e);
printf("删除的那个元素是:%d\n",e);
printf("输出删除后的顺序表:\n");
print(la);
InitList_Sq(lb);
CreateList(lb);
print(lb);
InitList_Sq(lc);
CreateList(lc);
print(lc);
InitList_Sq(ld);
Combine(lb,lc,ld);
printf("合并后的顺序表为:\n");
print(ld);

}
Пример #7
0
Status MazePath(MazeType maze[][N],Postype start,Postype end) {
    SqStack S;
    SElemType_Sq nodeInf;      // 当前通道的信息
    Postype curPos;            // 当前位置
    int curStep;               // 当前通道的序号

    InitList_Sq(&S);

    curPos = start;
    curStep = 1;

    do {
        if (Pass(curPos,maze)) {    // 当前位置可通过?
            FootPrint(curPos,maze); //留下足迹
            ShowMaze(maze);

            SetSElemType(&nodeInf,curStep,curPos,East); // 设置当前位置的属性

            Push_sq(&S,nodeInf); // 加入栈

            if (EqualPosType(curPos,end)) { // 如果到终点
                printf("\n 寻路成功!!\n\n");
                return TRUE;
            }

            curPos = NextPos(curPos,East); // 设置下一个为东
            curStep++; // 探索下一块
        } else {
            if (!StackEmpty_Sq(S)) {// 如果没有倒退到原点
                Pop_Sq(&S,&nodeInf);
                while (nodeInf.di == North && !StackEmpty_Sq(S)) {
                    MarkPrint(nodeInf.seat,maze);    // 四个方向都遍历过,就回退一步
                    ShowMaze(maze);
                    Pop_Sq(&S,&nodeInf);
                }

                if (nodeInf.di < North) {
                    maze[nodeInf.seat.x][nodeInf.seat.y] = ++nodeInf.di;
                    ShowMaze(maze);
                    Push_sq(&S,nodeInf);
                    curPos = NextPos(nodeInf.seat,nodeInf.di);
                }
            }
        }
    } while (!StackEmpty_Sq(S));

    printf("\n 寻路失败!!\n\n");
    return FALSE;

}
Пример #8
0
void conversioNum (int i) {
    SqStack S;
    SElemType_Sq e;

    InitList_Sq(&S);

    printf("十进制%d 转为八进制数后为: 0",i);

    while (i) {
        Push_sq(&S,i%8);
        i = i /8;
    }

    while (!StackEmpty_Sq(S)) {
        Pop_Sq(&S,&e);
        printf("%d",e);
    }
}
Пример #9
0
int main()
{
  SqList L;
  int i;
  int n;   //列表元素个数
  scanf("%d",&n);
  InitList_Sq(L);
  for(i=1;i<=n;i++)
  {
    int e;
    scanf("%d",&e);
    ListInsert_Sq(L,i,e);
  }
  printf("The List is:");
  Load_list(L);
  ListReverse(L,n);
  printf("The turned List is:");
  Load_list(L);
  return 0;

}
Пример #10
0
int main() {
	student s;
	SqList L;

	InitList_Sq(L);
	s.score = 60; s.boy = true;
	ListInsert_Sq(L, 1, s);
	s.score = 70; s.boy = false;
	ListInsert_Sq(L, 1, s);
	s.score = 90; s.boy = false;
	ListInsert_Sq(L, 2, s);

	int n = Length(L);// int n = L.length;
	for (int i = 1; i <= n; i++) {
		GetElem(L, i, s);
		std::cout << s.score << " " << s.boy << "\n";
	}

	ListDelete_Sq(L, 1, s);
	std::cout << "删除的1号元素是:"<<s.score << " " << s.boy << "\n";

	n = Length(L);
	for (int i = 1; i <= n; i++) {
		GetElem(L, i, s);
		std::cout << s.score << " " << s.boy << "\n";
	}

	double average_score = 0;
	for (int i = 1; i <= n; i++) {
		GetElem(L, i, s);
		average_score += s.score;
	}
	average_score /= n;
	std::cout << "平均分是" << average_score << "\n";
	return 0;
}