数据结构-顺序表
来源:互联网 发布:mac x ov10.11 编辑:程序博客网 时间:2024/05/21 23:31
#include <stdio.h>#include <stdlib.h>#define LIST_INIT_SIZE 10#define LISTINCREMENT 100#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int status;typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;} SqList;status InitList(SqList *L); //构造空线性表status ListInsert_Sq(SqList *L, int i, ElemType e); //线性表i位置前插入新元素estatus ListDelete_Sq(SqList *L, int i, ElemType *e);//线性表i位置元素删除,用e返回其值status DestroyList(SqList *L); //销毁线性表status ClearList(SqList *L); //制空线性表status ListEmpty(SqList L); //线性表判空,空为truestatus ListLength(SqList L); //线性表长度status GetElem(SqList L, int i, ElemType *e); //用e返回线性表i位置的元素值status LocateElem(SqList L, ElemType e,status *compare(ElemType a,ElemType b)); //返回第一个和e满足compare关系的元素位置status PriorElem(SqList L, ElemType cur_e, ElemType *pre_e); //用pre_e返回e 的前驱status NextElem(SqList L, ElemType cur_e, ElemType *next_e); //用next_e返回e的后继status ListTraverse(SqList L,status visit(ElemType a)); //使用visit遍历线性表status Equal(ElemType a , ElemType b);status visit(ElemType a);int main(){ int i = 0; ElemType e; SqList list; InitList(&list); printf("After carry out InitList(&list) the length of list: %d\n",ListLength(list)); for(i = 1 ; i < 9 ; i++) ListInsert_Sq(&list , 1 , i); printf("After carry out \nfor(i = 0 ; i < 8 ; i++)\n\tListInsert(&list , 1 ,i) \nthe length of list: %d\n",ListLength(list)); if(ListEmpty(list)) printf("At present the list is empty\n"); else printf("At present the list is't empty\n"); GetElem(list,1,&e); printf("After carry out GetElem(list,1,&e); the value of e is : %d\n", e); printf("The Equal() is used to determine the equality of the function\nAfter carry out LocateElem(list , 3 , Equal)"); printf("The value it returned is %d\n",LocateElem(list , 3 , Equal)); printf("After carry out ListTraverse(list , visit)\n"); ListTraverse(list , visit); return 0;}status DestroyList(SqList *L){ free(L->elem); L->length=0; L->listsize=0; L->elem= NULL; return OK;}status ClearList(SqList *L){ L->length=0; return OK;}status ListEmpty(SqList L){ if(0 == L.length) return TRUE; return FALSE;}status ListLength(SqList L){ return L.length;}status GetElem(SqList L, int i, ElemType *e){ if(i < 1 || i > L.length) return ERROR; *e = *(L.elem + i -1); return OK;}status LocateElem(SqList L, ElemType e,status *compare(ElemType a,ElemType b)){ int i=0; ElemType *p = L.elem; while(i < L.length && !compare(e, *p++)) i++; if(i <= L.length) return i; return 0;}status PriorElem(SqList L, ElemType cur_e, ElemType *pre_e){ ElemType *p = L.elem; int i = 1; while(1) if(*++p == cur_e && ++i <= L.length) { *pre_e = *--p; return OK; } return ERROR;}status NextElem(SqList L, ElemType cur_e, ElemType *next_e){ ElemType *p = L.elem; int i = 1; while(1) if(*p++ == cur_e && i++ <= L.length) { *next_e = *++p; return OK; } return ERROR;}status ListTraverse(SqList L, status visit(ElemType a)){ int i = 0; ElemType *p = L.elem; while(i++ < L.length) { visit(*p++); }}status InitList(SqList *L){ L->elem = (ElemType *) malloc(LIST_INIT_SIZE * sizeof(ElemType)); if (!L->elem) exit(OVERFLOW); L->length = 0; L->listsize = LIST_INIT_SIZE; return OK;}status ListInsert_Sq(SqList *L, int i, ElemType e){ if (i < 1 || i > L->length + 1) return ERROR; if (L->length >= L->listsize) { ElemType *newbase; newbase = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType)) ; if (!newbase) exit (OVERFLOW); L->elem = newbase; L->listsize = L->listsize + LISTINCREMENT; } ElemType *q,*p; q = &(L->elem[i-1]); for (p = &(L->elem[L->length-1]); p >= q; --p) *(p + 1) = *p; *q = e; L->length++; return OK;}status ListDelete_Sq(SqList *L, int i, ElemType *e){ ElemType *q,*p; if (i < 1 || i > L->length) return ERROR; p = &L->elem[i-1]; e = *p; q = L->elem + L->length - 1; for (++p ; p <= q ; ++p) *(p - 1) = *p; --L->length; return OK;}status Equal(ElemType a, ElemType b){ if(a == b) return 1; return 0;}status visit(ElemType a){ printf("visit : %d \n",a);}
0 0
- 数据结构之 顺序表
- 数据结构--顺序线性表
- 数据结构---顺序表
- 数据结构之顺序表
- 数据结构顺序表
- 数据结构顺序表
- 顺序表(数据结构)
- 数据结构之顺序表
- 数据结构之顺序表
- 数据结构笔记--顺序表
- 【数据结构】顺序表
- 数据结构《顺序链表》
- 数据结构之顺序表
- 数据结构试验 顺序表
- 数据结构--顺序表
- 数据结构--顺序表
- 数据结构之顺序表
- 基本数据结构:顺序表
- 项目源码解读dimensionControl
- Angularjs 传递k-v模式的参数
- 高性能异步web框架Sanic文档【四】
- 华为上机题目之数组比较
- JZ2440:通过nfs挂载文件系统不成功
- 数据结构-顺序表
- iOS开发 之 消息转发机制
- 从嗤之以鼻到“奇迹” 前淘宝工程师详解12306技术
- 指数分布的期望和方差推导
- Bootstrap图片轮播
- python学习笔记-装饰器
- 银行家算法
- CSS3绚丽旋转动画效果
- phone7菜单栏添加了图片无法显示