复习(数据结构):线性表 : C
2016-06-25 10:09
483 查看
代码
数据结构typedef struct{ ElemType data[MAXSIZE]; int length; //当前线性表的长度 }SqList;
初始化线性表
//初始化线性表 Status InitList(SqList *L){ L->length=0; return OK; } //置空线性表 Status ClearList(SqList *L){ L->length=0; return OK; } // 得到第i个元素的值,用e返回 Status GetElem(SqList L,int i,ElemType *e){ if(L.length==0 || i<1 || i>L.length) return ERROR; *e = L.data[i-1]; return OK; } // 返回第一个和数据e满足关系的元素的位置 int LocateElem(SqList L,ElemType e){ int i; if(L.length==0) return 0; for(i=0;i<L.length;i++){ if(L.data[i]==e ) break; } if(i>=L.length) return 0; return i+1; } //插入,在第i个位置之前插入新的元素e,L的长度加1 Status ListInsert(SqList *L ,int i,ElemType e ){ int k; if(L->length==MAXSIZE) retur Error; if(i<1||i>L->length+1) return ERROR; if(i<=L->length) // 插入的数据不在表尾 { for(k=L->length-1;k>=i-1;k--) L->data[k+1]=L->data[k]; } //插入新的元素 L->data[i-1]=e; L->length++; return OK; } // 删除 Status ListDelete(SqList *L,int i,ElemType *e ){ int k; if(L->length==MAXSIZE) retur Error; if(i<1||i>L->length+1) return ERROR; *e=L->data[i-1]; if(i<L->length){ for(k=i;k<L->length;k++) L->data[k-1]=L->data[k]; } L->length--; return OK; } //输出元素 Status visit(ElemType c ){ prinf("%d",c ); return OK; } Status ListTravese(SqList L ){ int i; for(i=0;i<L.length;i++) visit(L.data[i]); printf("\n"); return OK; } // 合并链表 // 注意La->data的写法等于(*La).data void unionL(SqList *La,SqList Lb){ int La_len,Lb_len,i; ElemType e; La_len=*La->length; Lb_len= Lb.length; for(i=1;i<=Lb_len;i++){ GerElem(LB,i,&e ); if(!LocateElem(*la,e)) ListInsert(La,++La_len,e ); } }
测试程序
//main函数 int main(){ SqList L; SqList Lb; ElemType e; Status i; int j,k; // 初始化 i = InitList(&L); printf("初始化L后:L.length=%d\n",L.length); // 插入顺序表( 表头) for(j=1;j<=5;j++) i=ListInsert(&L,1,j); printf("在L的表头插入后1~5后:L.data=") // 遍历 ListTrave(L); printf("L.length") printf("L是否是空:i=%d(1:是,0:否)\n",L.length); //情况顺序表 i=ClearList(&L); //构造一个有10个数的Lb i=InitList(&Lb); for(j=6;j<=15;j++) i=ListInsert(&Lb,1,j); unionL(&L,Lb); printf("依次输出合并了Lb的L的元素:"); ListTraverse(L); return 0; }
相关文章推荐
- 《算法竞赛入门经典》学习笔记 2.4.4 C++中的输入输出
- 数据结构1——线性表链式存储 java
- 数据结构上机实验之顺序查找(sdut_2040)
- 数据结构实验之查找六:顺序查找(sdut_3378)
- 数据结构8.广义表
- 数据结构
- 数据结构与算法分析 学习笔记(二)
- java数据结构(四)——栈
- 剑指offer-数据结构:字符串(基础知识)
- 共同学习Java源代码--数据结构--ArrayList类(七)
- 剑指offer-数据结构:数组和指针(基础知识)
- vpp接口数据结构
- 树与二叉树
- 分布式系统的数据结构
- 复习(数据结构:java):线性表(数组):基础类设计
- 接口缓存不能放置在静态的数据结构存储
- 算法之路(一)----求最大子序列
- 数据结构与算法简记:选择排序
- 利用栈解析算术表达式
- 数据结构之链表和递归