网站大量收购独家精品文档,联系QQ:2885784924

栈和队列(数据结构).doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
栈和队列(数据结构)

顺序栈的定义 typedef struct { ElemType *base; //栈底指针 ElemType *top; //栈顶指针 int stacksize; //当前分配的存储容量 } SqStack; //顺序栈结构类型 构造一个空栈 InitStack(SqStack S) { S.base=(ElemType *) malloc (INIT_SIZE*sizeof(ElemType)); S.top=S.base; //空栈 S.stacktsize=INIT_SIZE; //初始存储容量 } // InitStack 进栈 Push(SqStack S, ElemType e) { if ( S.top-S.base=S.stacksize ) { //当前存储空间已满,需增加容量: S.base=(ElemType *) realloc( S.base, (S.stacksize+INCREMENT) * sizeof(ElemType) ); S.top=S.base+S.stacksize; S.stacktsize+=INCREMENT; } *S.top++=e; //压入数据元素e,top+1 } // Push 出栈 Pop(SqStack S, ElemType e) { if ( S.top!=S.base ) e=*- -S.top; } // Pop 链栈的定义 typedef struct SNode { ElemType data; //数据域 struct SNode *next; //指针域 } SNode, *LinkStack; 进栈 Push(LinkStack S, ElemType e) { p=(LinkStack) malloc( sizeof(SNode) ); p-data=e; //压入数据元素e p-next=S-next; //将新结点链入S中 S-next=p; //S指向新结点 } // Push 出栈 Pop(LinkStack S, ElemType e) { p=S-next; S-next=p-next; //修改链接指针 e=p-data; //弹出栈顶元素 free(p); //释放p结点 } // Pop //将10进制数n转换成指定的d进制数(2~9) Conversion(int n, int d) { InitStack(S); //构造空链栈S while (n) { Push(S, n%d); n/=d; } Print(S); //输出转换结果 } // Conversion 顺序队列 typedef struct { ElemType *front; //队首指针 ElemType *rear; //队尾指针 int queuesize; //当前分配的存储容量 } SqQueue; //顺序队列结构类型 构造空的顺序队列 InitQueue(SqQueue Q) { Q.front=(ElemType *) malloc (QueueInitsize*sizeof(ElemType)); Q.rear=Q.front; //空队列 Q.queuesize=QueueInitsize; //初始存储容量 } // InitQueue 入队 InQueue(SqQueue Q, ElemType e) { if (Q.rear-Q.front=Q.queuesize) { Q.front=(ElemType *) realloc (Q.front, Q.queuesize+QueueIncrement) *sizeof(ElemType));//重新分配 Q.rear=Q.front+Q.Queuesize; Q.Queuesize+=QueueIncrement;} *Q.rear++=e; //在队尾插入数据元素e,rear+1 } // InQueue 出队 OutQueue(SqQueue Q, ElemType e) { if (Q.rear!=Q.front) { e=*Q.front; Q.front++; } } // OutQueue 链队列的定义 typedef struct QNode { ElemType data; //数据域 struct QNode *next; //指针域 } QNode, *LinkQueue; //链队列结构类型 建立空链队列

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档