1、stdio.hstring.hconio.hiostream.hmalloc.h#define LIST_INIT_SIZE 10#define OK 1#define ERROR 0#define LISTINCREMENT 10 typedef int ElemType;typedef struct int *elem; int length; int listsize;SqList; int InitList_Sq(SqList &L) /InitList_Sq() function /Inititial a Sq_List L.elem=(ElemType *)malloc(LIST_
2、INIT_SIZE *sizeof(ElemType); if (!L.elem) return(0); L.length=0; L.listsize=LIST_INIT_SIZE; return(1);/end of InitList_Sq() functionint ListInsert_sq(SqList &L,int i,int e)/ListInsert_sq() if(iL.length+1) /i (location) is illegal cout =L.listsize) /insert into the end of the Sqlist int *Newbase; New
3、base=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int); if(!Newbase) cout=q;-p) /move the element *(p+1)=*p; *q=e; +L.length; return (OK); /ListInser_sq() end void main() int m,i,x; SqList A; InitList_Sq(A); coutm;coutInput the element of A:; for(i=1;ix; ListInsert_sq(A,i,x); coutThe elem
4、ent of A: for(i=0;A.length; coutA.elemit实验结果:实验结果分析:本程序中首先定义了一个链表的结构体,然后定义了一个线性表,在插入函数中先申请了一个与头文件中定义的线性表大小相同的内存空间,然后用if语句判断这个线性表是否存在,若不存在则返回0,若存在则将线性表的长度设置为与申请的空间大小相同。然后就定义了输入和输出函数。在主函数中首先定义了两个变量,接着定义了一个线性表,然后调用见线性表的函数、输入函数和输出函数。最后运行程序就得到了如上图的结果。(二)已知顺序表la和lb中的数据元素按非递减有序排列,将la和lb表中的数据元素,合并成为一个新的顺序表l
5、c,lc中的数据元素仍按非递减有序排列,并且不破坏la和lb表。#define MAXSIZE 20#define LIST_INIT_SIZE 20#define LISTINCREMENT 20 #define TRUE 1#define FALSE 0 L.elem=(int *)malloc(LIST_INIT_SIZE *sizeof(int);L,int i,ElemType e)/ListInsert_sq() Newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);int Me
6、rge_Sq(SqList &A,SqList &B,SqList &C) /Merge_Sq() function /Merge the SqList A and B to C C.listsize=C.length=A.length+B.length; C.elem=(ElemType *)malloc(C.listsize*sizeof(ElemType); int i=0,j=0; /i and j is the Subscript of A.elem and B.elem int k=0; /k is the Subscript of C.elem while(i=A.length
7、) /insert the rest of SqList A C.elem k=A.elem i; i+;k+; /end of while while (j=B.length) /insert the rest of SqList B C.elem k-1=B.elem j; j+;Success to Merge A and B ! return(1);/end of Merge_Sq() functionvoid main() SqList A,B,C; int m,n,i,j,x; InitList_Sq(A);InitList_Sq(B);Input the size of B:n;
8、Input the element of B: for(j=1;j ListInsert_sq(B,j,x); InitList_Sq(C); Merge_Sq(A,B,C);After merge,the element of C: for(i=0;m+n;C.elemi结果分析: 创建了一个SqList的结构体函数和创建线性表的函数,然后是输入函数,使用for循环来将数字逐个输入,显示的很清楚用户输入的是第几个数字。用Merge_Sq函数来实现两表的合并,用cout输出。(三).从有序顺序表A中删除那些在顺序表B和顺序表C中都出现的元素# define OK 1# define ERROR 0# define MAXSIZE 10/* 顺序存储类型 */*构造一个空线性表算法*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1