好文档 - 专业文书写作范文服务资料分享网站

顺序表及链表的应用

天下 分享 时间: 加入收藏 我要投稿 点赞

{ case ')':if(e=='(')Pop(&S,&x);else return 0;break; case ']':if(e=='[')Pop(&S,&x);else return 0;break; case '}':if(e=='{')Pop(&S,&x);else return 0;break; } } } if(!StackEmpty(S))return 0; else return 1; }

GetTop.cpp

#include \

int GetTop(SqStack S,SElemType *e)

{//若栈不空,则用e返回S的栈顶元素,并返回1,否则返回0 if(S.top==S.base)return 0; else *e=*(S.top-1); return 1; }

InitStack.cpp

#include #include \//构造一个空栈

int InitStack(SqStack *S) { (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!(*S).base)exit(-1);//存储分配失败 (*S).top=(*S).base; (*S).stacksize=STACK_INIT_SIZE; return 1; }

Pop.cpp

#include \

int Pop(SqStack *S,SElemType *e)

{//若栈不空,则删除S的栈顶元素,用e返回其值,并返回1,否则返回0 if(StackEmpty(*S))return 0; *e=*(--(*S).top); return 1; }

Push.cpp

#include #include \

int Push(SqStack *S,SElemType e)

6

{//插入元素e为新的栈顶元素 if((*S).top-(*S).base>=(*S).stacksize)//栈满,追加存储空间 { (*S).base=(SElemType

*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!(*S).base)exit(-1);//存储分配失败 (*S).stacksize+=STACKINCREMENT; } *((*S).top++)=e; return 1; }

StackEmpty.cpp #include \

int StackEmpty(SqStack S) { if(S.top==S.base)return 1; else return 0; }

………………………………………………………………………………………………………. Check4().cpp #include \#include void Check4(){ printf(\实现循环队列中插入和取出节点的算法:\\n\ SqQueue Q;//实现第四个算法 QElemType e; CreateQueue(&Q); printf(\请输入插入的节点:\ scanf(\ PrintQueue(Q); EnQueue(&Q,e); PrintQueue(Q); DeQueue(&Q,&e); PrintQueue(Q); }

CreateQueue.cpp #include #include \//创建一个队列 int (SqQueue *Q) { int n,i;

7

InitQueue(Q); printf(\输入队列的长度 :\ scanf(\ if(n>MAXQSIZE){printf(\ for(i=0;i

DeQueue.cpp #include \#include

int DeQueue(SqQueue *Q,QElemType *e)

{//若队列不空,则删除Q的队头元素,用e返回其值,并返回1,否则返回0 if((*Q).front==(*Q).rear){printf(\ *e=(*Q).base[(*Q).front]; (*Q).front=((*Q).front+1)%MAXQSIZE; return 1; }

EnQueue.cpp #include #include \

int EnQueue(SqQueue *Q,QElemType e) {//插入元素e为新的队尾元素 if(((*Q).rear+1)%MAXQSIZE==(*Q).front){printf(\队列满 ((*Q).base)[(*Q).rear]=e; (*Q).rear=((*Q).rear+1)%MAXQSIZE; return 1; }

InitQueue.cpp #include \#include //构造一个空队列

int InitQueue(SqQueue *Q) { (*Q).base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)); if(!((*Q).base))exit(-1);//存储空间分配失败 (*Q).front=(*Q).rear=0; return 1; }

PrintQueue.cpp #include \

8

#include

int PrintQueue(SqQueue Q) { if(Q.front==Q.rear){printf(\ int i,n; QElemType *p; n=(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE; p=&((Q.base))[Q.front]; for(i=0;i

……………………………………………………………………………………………………….

设计二链表的应用代码

Head.h

typedef int ElemType; typedef struct LNode

{//线性表的单链表存储结构 ElemType data; struct LNode *next; }LNode,*LinkList;

typedef struct DuLNode{ //线性表的双向链表存储结构 ElemType data; struct DuLNode *prior; struct DuLNode *next; int freq;

}DulNode,*DuLinkList;

void CreateList_L(LinkList *L,int n); int PrintLinkList(LinkList L);

int EqualLinkList(LinkList *La,LinkList *Lb); void CreatCircularLinkList(LinkList *L,int n); int MonkeyKing(LinkList L,int n);

int LinkListLength_Dul(DuLinkList L);

int CreateLinkList_Dul(DuLinkList *L,int n); int PrintLinkList_Dul(DuLinkList L); int Locate(DuLinkList *L,ElemType e);

9

//int InterSection(LinkList La,LinkList Lb,LinkList *Lc); void Check_1(); void Check_2(); void Check_3();

…………………………………………………………………………………………………….... main.cpp

#include #include \#include void main() { int choice; do { printf(\ 链表的应用 \\n\ printf(\ ------------主菜单-------------- \\n\ printf(\ (1) 删除两个递增链表中不同的元素 \\n\ printf(\ (2) 猴子选大王 \\n\ printf(\ (3) 实现locate函数 \\n\ printf(\ (0) 退出系统... \\n\ printf(\请选择操作步骤:\ scanf(\ if(choice<0 && choice>3) continue; switch(choice) { case 1:Check_1();break; case 2:Check_2();break; case 3:Check_3();break; case 0:exit(0); default:break; } }while(1); }

…………………………………………………………………………………………………….... Check_1.cpp #include \#include void Check_1() { LinkList La,Lb; int n1,n2; printf(\请输入单链表La的长度:\ scanf(\

10

顺序表及链表的应用

{case')':if(e=='(')Pop(&S,&x);elsereturn0;break;case']':if(e=='[')Pop(&S,&x);elsereturn0;break;case'}':if(e=='{')Pop(&S,&x);elsereturn0;break;}}}if(!StackEmpty(S))r
推荐度:
点击下载文档文档为doc格式
02iav2pszk6i8ss1c8w102tjb2ixwe014mj
领取福利

微信扫码领取福利

微信扫码分享