⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datas.cpp

📁 线形表的顺序存储结构算法 VC++6.0下开发~!
💻 CPP
字号:
#include<stdlib.h>

#include<stdio.h>

enum status{OVERFLOW=0 , OK};

#define  LIST_INIT_SIZE     100  
                                      // 线性表存储空间的初始分配量
typedef struct {
					int      *elem;
					int      length;
					int      listsize;
				}SqList;

status InitList_Sq( SqList& L ) {  
                                        // 构造一个空的线性表 

								L.elem = (int*) malloc (LIST_INIT_SIZE*sizeof (int));
								if (!L.elem)  exit (OVERFLOW);    
																 // 存储分配失败
										L.length = 0;                                      
																 // 空表长度为零
										L.listsize = LIST_INIT_SIZE;           
																// 初始存储容量
								return OK;	
								}																
									// InitList_Sq



//status ListInsert_Sq(SqList &L, int i, int e) 
		//			{
															    	// 在顺序表L的第 i 个元素之前插入新的元素e,
															     	// i 的合法范围为  1≤i≤L.length+1
		//			int *q,*p;
			//		q = &(L.elem[i-1]);							    // q 指示插入位置
			//		for (p = &(L.elem[L.length-1]); p >= q;  --p)  
			//				*(p+1) = *p;						    // 插入位置及之后的元素右移
			//		*q = e;											// 插入e
			//		++L.length;										// 表长增1
			//		return OK;
//
			//		} // ListInsert_Sq            


void  MergeList_Sq(SqList La ,SqList Lb,SqList &Lc)
				{
																				//已知顺序线性表La和Lb的元素按值非递减排列
																				//归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减排列
					int *pa,*pb,*pc,*pa_last,*pb_last;

					pa=La.elem; pb=Lb.elem;										// pa, pb指示La表和Lb表第一个元素
					Lc.listsize=Lc.length=La.length+Lb.length;
					pc=(int*)malloc(Lc.listsize* sizeof(int));//
						
					Lc.elem=pc;//
					if(!Lc.elem) exit(OVERFLOW);
//
					pa_last=La.elem+La.length-1;								// pa_last指示La表最后一个元素
					pb_last=Lb.elem+Lb.length-1;								// pb_last指示Lb表最后一个元素

					while (pa<=pa_last&&pb<=pb_last)
							{  
								if (*pa<=*pb) *pc++=*pa++;
								else *pc++=*pb++ ;
							}
					while (pa<=pa_last) 
								*pc++=*pa++ ;									 // 插入 La 表中剩余元素
					while (pb<=pb_last) 
								*pc++=*pb++ ;									 // 插入 Lb 表中剩余元素
}																				 // MergeList



void Input_list(SqList &L)           //输入一个线性表;
				{
					int *pa=L.elem,i;
					printf("Please input a list:");
					scanf("%d",&i);
					while (i)
					{
						*pa++=i;
						L.length++;
						scanf("%d",&i);
					}
}



void Output_list(SqList &L)			//输出一个线性表;
				{
					int *pa=L.elem;
					int *pa_list=L.elem+L.length-1;
					printf("\n");
					while (pa<=pa_list)
						printf("%d\t",*pa++);
					printf("\n");
				}



void main()
{
	SqList La,Lb,Lc;
	InitList_Sq(La);
	InitList_Sq(Lb);
	InitList_Sq(Lc);
	Input_list(La);
	Input_list(Lb);
	MergeList_Sq(La,Lb,Lc);
	Output_list(Lc);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -