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); }
//对顺序链表各个功能函数的测试 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); }
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); }
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; }
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); }
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); }
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; }
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); } }
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; }
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; }