线性表
顺序线性表
#include<stdio.h>
#include<stdlib.h>
//宏定义
#define LT(a,b) ((a)<(b))
#define N 100
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType ;
typedef struct LNode{
ElemType *elem ; //存储空间基地址
int lenght ; //当前线性表的长度
int listsize ; //当前已分配的线性表空间长度
}SqList;
//初始化空的线性表
bool initList(SqList &L , int lenght){
if(lenght==0) lenght = LIST_INIT_SIZE ;
L.elem=(ElemType *)malloc(lenght*sizeof(ElemType));
L.lenght = 0 ;
L.listsize = lenght ;
return true ;
}
//在线性表的i位置出插入元素e
bool insertList(SqList &L , ElemType e , int i ){
ElemType *p , *q ;
if(i<0 || i>L.lenght)return 0 ;
if(L.lenght >= L.listsize){
ElemType *newbase = (ElemType *)realloc( L.elem , (L.listsize + LISTINCREMENT)*sizeof(ElemType));
if(!newbase) return 0 ;
L.elem = newbase ;
L.listsize += LISTINCREMENT ;
}
q = &L.elem[i];
for( p = &L.elem[L.lenght] ; p>=q ; --p ){
*p = *(p-1);
}
*q = e ;
L.lenght += 1;
return true ;
}
//排序
void sortList(SqList &L){
}
//删除线性表位置i出的元素,并用e返回删除的元素数值
bool deleteListElem(SqList &L , int i , ElemType &e){
int *p , *q ;
if(i<0 || i>L.lenght)return 0 ;
q = &L.elem[i];
e = *q ;
for( p = q ; p < (L.elem+L.lenght) ; p++ ){
*p = *(p+1);
}
--L.lenght ;
return true;
}
//打印线性表
void printList(SqList L){
printf("当前数值:");
int i ;
for(i = 0 ; i < L.lenght ; i++){
printf("%d ",L.elem[i]);
}
printf("\r\n");
}
//快速排序
int partition(){
}
void quickSort(){
}
// 合并两个线性表
void mergeList(SqList La , SqList Lb ,SqList &Lc){
ElemType *pa , *pb , *pc ;
Lc.listsize = La.lenght + Lb.lenght ;
initList(Lc,Lc.listsize);
Lc.lenght = Lc.listsize ;
pc = Lc.elem ;
pa = La.elem ;
pb = Lb.elem ;
while(pa<=&La.elem[La.lenght-1] && pb<=&Lb.elem[Lb.lenght-1]){
if(*pa <= *pb) *pc++ = *pa++ ;
else *pc++ = *pb++ ;
}
while(pa<=&La.elem[La.lenght-1]) *pc++ = *pa++ ;
while(pb<=&Lb.elem[Lb.lenght-1]) *pc++ = *pb++ ;
}
int main(){
SqList La , Lb , Lc ;
int i ;
initList(La,LIST_INIT_SIZE);
int data[6] = {5,3,6,2,7,4};
for( i = 0 ; i < 6 ; i++){
insertList(La , data[i] , i);
}
printf("La:\r\n");
printList(La);
ElemType e ;
deleteListElem(La,3,e);
printList(La);
int Bdata[5] = {1,3,2,4,6};
initList(Lb,LIST_INIT_SIZE);
for( i = 0 ; i < 5 ; i++ ){
insertList(Lb , Bdata[i] , i);
}
printf("Lb:\r\n");
printList(Lb);
mergeList(La,Lb,Lc);
printList(Lc);
return 0 ;
}