线性表是最基本且最常用的一种线性结构,同时也是其他数据结构的基础。也就是线性表的问题具有一定的普遍性
一,定义和特性
二、分类
线性表又根据存储结构可以分为顺序表和链表
#define MAXSIZE 100; typedef struct { int *elem; //指向基地址 int length; //记录表长度 }Sqlist;
初始化
Status Initlist(Sqlist &L) { L.elem = new int[MAXSIZE]; if(!L.elem) exit(OVERFLOW); L.length = 0; return 0; }
取值
Status GetElem(Sqlist L, int i, int &e) { if(i<1 || i>L.length) return ERROR; e = L.elem[i-1]; return 0; }
插入
Status SqInsert(Sqlist &L, int i, int e) { if( (i<1)|(i>L.length+1) ) return ERROR: if(L.length == MAXSIZE) return ERROR; for( int j=L.length-1; j>=i-1; j--) { L.elem[j+1] = L.elem[j]; } L.elem[j] = e; L.length = L.length + 1; return OK; }
删除
Status ListDelete(Sqlist &L, int i) { if( (i<1) | (i>L.length) return ERROR; for( int j=i; j<=L.length-1; j++) L.elem[j-1] = L.elem[j]; L.length--; return OK; }
typedef struct LNode { int data; struct LNode *next; }LNocd,*LinkList;
初始化
Status Initlist(LinkList &L) { L = new LNode;
L->next LNode;
return OK;
}
取值
Status GetElem(LinkLink L, int i, ElemType &e) { p=L->next j=1; while(p && j<i) { p=p->next; ++j; } if( !p || j>i) return ERROR; e=P->data; return OK; }
删除元素
Status DeleteElem(Link &L,ElemType e) { Node *p=L; Node *q=p->next; while(e-1>0) { p=p->next; q=p->next; e--; } p->next=p->next->next; delete q; return 0; }
显示
void show(Link L) { Node *p=L->next; while(p) { cout<<p->data<<" "; p=p->next; } cout<<endl; }
删除链表
void DeleteLinklist(Link &L) { Node *p=L->next; while(p) { delete L; L=p; p=p->next; } }
原文:https://www.cnblogs.com/kuoke/p/13206581.html