顺序表及链表的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计一顺序表的应用代码
Head.h
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
#define STACK_INIT_SIZE 100//栈存储空间初始分配量
#define STACKINCREMENT 10//栈存储空间分配增量
#define MAXQSIZE 10//最大队列长度
typedef int ElemType;
typedef char SElemType;
typedef int QElemType;
typedef struct{
int *elem;//存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量
}SqList;
typedef struct{
SElemType *base;//在栈构造之前和销毁之后,base的值为null SElemType *top;//栈顶指针
int stacksize;//当前已分配的存储空间,以元素为单位
}SqStack;
typedef struct
{
QElemType *base;//初始化的动态分配存储空间
int front;//头指针,若队列不空,指向队列头元素
int rear;//尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;
void Check1();
void Check2();
void Check3();
void Check4();
int InitList_Sq(SqList *L);
int CreateList(SqList *L);
int DeleteElem_Sq(SqList *L);
int PrintElem(SqList L);
int DeleteElem_1(SqList *L);
int DevideList_Sq(SqList L,SqList *La,SqList *Lb);
int InitStack(SqStack *L);
int Push(SqStack *S,SElemType e);
int StackEmpty(SqStack S);
int GetTop(SqStack S,SElemType *e);
int Pop(SqStack *S,SElemType *e);
int Correct(char exp[], int n);
int InitQueue(SqQueue *Q);
int CreateQueue(SqQueue *Q);
int PrintQueue(SqQueue Q);
int EnQueue(SqQueue *Q,QElemType e);
int DeQueue(SqQueue *Q,QElemType *e); ………………………………………………………………………………………………………. main.cpp
#include
#include "head.h"
#include"stdlib.h"
#include
void main()
{
int choice;
do
{
printf("\n 顺序表的应用\n");
printf("\n ------------主菜单-------------- \n");
printf(" (1) 删除线性表中值为item的元素\n");
printf(" (2) 将一个顺序表分拆成两个顺序表 \n");
printf(" (3) 判断括弧是否匹对 \n");
printf(" (4) 循环队列中插入和取出节点\n");
printf(" (0) 退出系统 \n");
printf("\n请选择操作步骤:");
scanf("%d",&choice);
if(choice<0 && choice>4) continue;
switch(choice)
{
case 1:Check1();break;
case 2:Check2();break;
case 3:Check3();break;
case 4:Check4();break;
case 0:exit(0);
default:break;
}
}while(1);
} ………………………………………………………………………………………………………. Check1.cpp
#include "head.h"
#include
void Check1(){
SqList L1;
printf("实现删除线性表中值为item的元素的算法:\n");
CreateList(&L1);//实现第一个算法
PrintElem(L1);
DeleteElem_1(&L1);
PrintElem(L1);
}
CreateList.cpp
#include"head.h"
#include"stdio.h"
#include"stdlib.h"
//创建顺序表,在顺序表中输入数据元素。int CreateList(SqList *L)
{
int i,n;
if(!InitList_Sq(L))exit(-1);
printf("请输入顺序表的长度:");
scanf("%d",&n);
(*L).length=n;
ElemType *p=(*L).elem;
printf("请输入顺序表的数据元素:");
for(i=0;i { scanf("%d",p); p++; } return 1; } PrintElem.cpp #include "head.h" #include int PrintElem(SqList L) { if(L.length==0)printf("Empty!\n"); int i; for(i=0;i printf("%4d",L.elem[i]); printf("\n"); return 1; } DeleteElem_1.cpp #include "head.h" #include int DeleteElem_1(SqList *L) { int *p,*q,item; printf("请输入要删去的元素:");