顺序表及链表的应用

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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("请输入要删去的元素:");

相关文档
最新文档