数据结构 第三季(part 1)
2014-04-29 16:32
399 查看
//线性表:零个或多个数据元素的有限序列 //线性表的 //ADT: /*Data 线性表的数据对象集合为{a1,a2,....,an},每个元素的类型均为DataType,其中,除第一个元素之外,都有且只有一个前驱元素, 除最后一个元素之外,有且只有一个直接后继元素。 Operation InitList(*L); ListEmpty(L); ClearList(*L); GetElem(L,i,*e); LocateElem(L,e); ListInsert(*L,i,e); ListDelete(*L,i,*e); ListLength(L); */ //endADT //求La与Lb的并 void union(List *La,List Lb){ int La_len,Lb_len,i; ElemType e; La_len = ListLength(La); Lb_len = ListLength(Lb); for(i=1;i<Lb_len;i++){ GetElem(Lb,i,e); if(!LocateElem(La,e)){ ListInsert(La,++La_len,e); } } }
#define MAXSIZE 20 typedef int ElemType; typedef struct{ ElemType data[MAXSIZE]; int length; }SqList;
#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int Status; #include <stdio.h> 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; } Status ListInsert(SqList *L,int i,ElemType e){//插入操作 int k; if(L->length == MAXSIZE) return ERROR; if(i<1||i>L->length+1 ) return ERROR; if(i<=L->length){ for(k=L->length;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==0) return ERROR; if(i<0||i>L->length) return ERROR; *e = L->data[i-1]; for(k=i-1;i<L->length-1;i++) L->data[k]=L->data[k+1]; return OK; } int ListLength(SqList L){//链表长度 return L.length; } int LocateElem(SqList L,ElemType e){//元素定位 int k; for(k=0;k<L.length;k++){ if(e==L.data[k]) return k+1; } return 0; } void ClearList(SqList *L){//清除列表 int k; for(k=0;k<L->length;k++) L->data[k]=0; L->length = 0; } Status ListEmpty(SqList L){//判断是否为空列表 if(L.length == 0) return TRUE; else return FALSE; } Status InitList( 4000 SqList *L){ int i; printf("请输入线性列表长度:\n"); scanf("%d",&i); if(i<0||i>MAXSIZE) return ERROR; L->length = i; for(int k=0;k<L->length;k++){ printf("还需输入(%d)个元素......\n",(L->length-k)); scanf("%d",&L->data[k]); } return OK; }
#include "3_2.h" #include "3_2b.h" //线性表:零个或多个数据元素的有限序列 //线性表的 //ADT: /*Data 线性表的数据对象集合为{a1,a2,....,an},每个元素的类型均为DataType,其中,除第一个元素之外,都有且只有一个前驱元素, 除最后一个元素之外,有且只有一个直接后继元素。 Operation InitList(*L); ListEmpty(L); ClearList(*L); GetElem(L,i,*e); LocateElem(L,e); ListInsert(*L,i,e); ListDelete(*L,i,*e); ListLength(L); */ //endADT int main(){ SqList L; InitList(&L); printf("线性链表是否为空?是(1)否(0):%d\n",ListEmpty(L)); printf("线性表的长度:%d\n",ListLength(L)); printf("现在清空线性表......\n"); ClearList(&L); printf("线性链表是否为空?是(1)否(0):%d\n",ListEmpty(L)); printf("线性表的长度:%d\n",ListLength(L)); ListInsert(&L,1,1); printf("线性链表是否为空?是(1)否(0):%d\n",ListEmpty(L)); printf("线性表的长度:%d\n",ListLength(L)); return 0; }
相关文章推荐
- 数据结构 第三季(part 2)
- 数据结构 第三季(part 3)
- 【字符串数据结构后缀系列Part3】后缀自动机的性质和应用
- C++程序设计_part 3 数据结构 chap15 模板
- 数据结构与算法(Python)——常见数据结构Part4(二叉树)
- 数据结构与算法(Python)——常见数据结构Part3(队列和循环队列)
- 数据结构-----复习(严蔚敏版)part1
- 软考指南:程序员数据结构笔记
- part3
- 用标准C编写COM(三)COM in plain C,Part3
- 数据结构 第一章绪论
- 在Windows下运行Felzenszwalb的Deformable Part Models(voc-release4.01)目标检测matlab源码
- List of data structures:数据结构大全
- Spring in action--Part4-Integrating Spring
- [Redis](数据结构)跳转表
- 数据结构上机实践第14周项目2 - 二叉树排序树中查找的路径
- 程序员数据结构笔记
- WCF Part 4 : Make your service visible through metadata
- 数据结构全攻略--线性结构不攻自破之栈和队列
- 《数据结构》实验一: VC编程工具的灵活使用 第一部分