目录
1、顺序表
1.1 存储定义
顺序表的存储定义
typedef struct{ int *elem; int length; }SqList;
1.2 构造顺序表
顺序表的初始化,构造一个空的顺序表
void InitList(SqList &L){ L.elem = new int[MAXSIZE]; L.length = 0; }
1.3 静态初始化顺序表
从键盘上依次输入21、18、30、75、42、56,创建顺序表。
void InputList(SqList &L,int n){ int i; for(i=0;i<n;i++){ scanf("%d",&L.elem[i]); L.length++; } }
1.4 顺序表的元素输出
输出顺序表中的各元素值。
void OutputList(SqList &L){ int i; for(i=0;i<n;i++){ printf("%d",&L.elem[i]); } }
1.5 顺序表的 插入
分别在顺序表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出顺序表中的各元素值。
Status ListInsert (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[i-1]=e; ++L.length; return OK; }
1.6 顺序表的删除
删除顺序表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。
Status ListDelete(SqList &L,int i){ if((i<1)||(i>L.length)) return ERROR; for(int j=i;j<L.length;j++) L.elem[j-1]=L.elem[j]; --L.length; return OK; }
1.7 顺序表的取值
取顺序表中的第5个数据元素和第7个数据元素。
Status GetElem(SqList L,int i,int e){ if(i<1||i>L.length) return ERROR; e = L,elem[i-1]; return OK; }
1.8 顺序表的查找
查找35,42是否在顺序表中,查找成功返回其位置信息,否则返回0。
Status LocatElem(SqList L,int e){ for(int i=0;i<L.length;i++){ if(L.elem[i]==e) return i+1; } return ERROR; }
2、单链表
2.1 单链表的存储定义
单链表的存储定义
typedef struct LNode{ ElemType data; struct LNode *next; }LNOde,*LinkList;
2.2 头插法创建单链表
从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值。
void GreateList(LinkList &L,int n){ L=(LinkList)malloc(sizeof(LNode)); //L = new LNode; L->next = NULL; for(i=n;i>0;i--){ p = new LNode scanf("%d",&p->data); p->next = L->next; L->next = p; } } //GreateList
2.3 单链表的插入
分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值。
Status ListInsert(LinkList &L,int i,ElemType e){ p=L; j=0; while(p&&j<i-1){ p=p->next; ++j; } if(!p||j>i-1) return ERROR; s = new LNode; s->data = e; s->next = p->next; p->next = s; return OK; }//LinkList
2.4 单链表的删除
删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。(带头结点)
Status ListDelete(LinkList &L,int i,ElemType &e){ p=L; j=0; while(p->next&&j<i-1){ p=p->next; ++j; } if(!p||j>i-1) return ERROR; q = p->next; p->next = q->next; e = q->data; free(q); return OK; }
2.5 单链表的取值
取单链表中的第5个数据元素和第7个数据元素(带头结点)
Status GetElem(LinkList L,int i,ElemType &e){ p = L->next; j=0; while(p&&j-1){ p=p->next; ++j; } if(!p||j>i) return ERROR; else e=p->data; return OK; }//GetElem
2.6 单链表的查找
在单链表中查找值为30和90的数据元素。
Statue Locate(Linklist L,int e){ p = L->next; j=0; while(p&&p->data!=e){ p=p->next; ++j; } if(p) return j; else return ERROR; } //LocateElem L