线性表的顺序表示
来源:互联网 发布:dpp软件怎么用 编辑:程序博客网 时间:2024/05/03 10:07
线性表的顺序表示终于马马虎虎的勉强写完了,
写的不是很完整,开始时比较不理解就是动态分
配内存,现在懂一点点了,数据结构落下很多了,
这几天要好好整了
#include<iostream>#include<stdlib.h>#include<malloc.h>using namespace std;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType;typedef struct{ int* elem; int length; int listsize;}Sqlist;Status InitList(Sqlist &L) //线性表的初始化{ L.elem = (int *)malloc(10 * sizeof(ElemType)); L.length = 0; L.listsize = 10; return OK;}Status CreatList(Sqlist &L) //线性表的创建{ Status i,n; cout<<"please input list length:"<<endl; cin>>n; L.length = n; cout<<"please input L.elem:"<<endl; for(i=0;i<n;i++) cin>>L.elem[i]; return OK; } Status DisplayList(Sqlist &L) //线性表元素展示{ Status i; for(i=0;i<L.length;i++) cout<<L.elem[i]<<" "; cout<<endl; return OK;}Status ClearList(Sqlist &L) //线性表的清空{ Status i; for(i=0;i<L.length;i++) L.elem[i] = 0; L.length = 0; return OK;} Status ListEmpty(Sqlist &L) //判断线性表是否为空{ if(L.length == 0) return TRUE; else return FALSE; }Status ListLength(Sqlist &L) //求线性表的长度{ return L.length;} Status GetElem(Sqlist &L, Status &num, ElemType &e) //用e返回线性表中第i个元素的值 { e = L.elem[num-1]; return e;} Status LocateElem(Sqlist &L, ElemType &e) //返回元素e的位序,若不存在返回0{ Status i; for(i=0;i<L.length;i++) { if(L.elem[i] == e) break; } if(i<L.length) return (i+1); else return 0;} Status PriorElem(Sqlist &L, ElemType &cur_e, ElemType &pre_e) //求元素的前驱{ Status i; i = LocateElem(L,cur_e); if(i == 1) { //free(pre_e); return ERROR; } else { pre_e = L.elem[i-2]; return pre_e; }} Status NextElem(Sqlist &L, ElemType &cur_e, ElemType &next_e) //求元素后继 { Status i; i = LocateElem(L, cur_e); if(i == L.length) { //free(next_e); return ERROR; } else { next_e = L.elem[i]; return next_e; } }Status ListInsert(Sqlist &L, Status &num, ElemType &e) //在线性表i前插入元素e{ if(num<1 || num>L.length) return ERROR; else { Status j; if(L.length == 10) { L.elem = (int *)realloc(L.elem, (10+20)*sizeof(ElemType)); L.listsize = 10 + 20; } for(j=L.length-1;j>=num-1;j--) L.elem[j+1] = L.elem[j]; L.elem[num-1] = e; L.length++; return OK; }} Status ListDelete(Sqlist &L, Status &num, ElemType &e) //删除第i个数据元素{ Status j; if(num<1 || num>L.length) return ERROR; else { e = L.elem[num-1]; for(j=num;j<L.length;j++) L.elem[j-1] = L.elem[j]; L.length--; return e; }} Status DistroyList(Sqlist &L) //线性表的销毁{ free(L.elem); return OK;} Status main(){ int temp; Sqlist L; ElemType e, cur_e, next_e; Status num; InitList(L); CreatList(L); DisplayList(L); cin>>num; temp = ListDelete(L, num, e); //ClearList(L); DisplayList(L); //temp = ListEmpty(L); cout<<temp<<endl; DistroyList(L); system("pause"); return 0;}
- 线性表的顺序表示。
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表的顺序表示
- 线性表顺序表示
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- 线性表的顺序表示与实现
- 线性表的顺序表示和实现
- 线性表的顺序表示与实现
- 线性表的顺序表示和实现
- 线性表的顺序表示和实现
- java.util.concurrent 线程池
- solaris的语法高亮
- Java编程中影响性能的一些特点
- 该如何努力呢?
- HTTP协议简介
- 线性表的顺序表示
- 再分发 Windows Media 组件
- js校验大全
- 用纯C语言解决迷宫问题,简洁易懂
- 操作系统是什么?+读操作系统概念第六版
- Unix/Linux线程同步互斥量的使用
- 控制台程序接收键盘消息
- 编写Linux网络设备驱动(上)
- premiere导出时出现黑边的解决办法