1、 LinkNode* first;/链表头指针/ stack.h#include .list.h class stack stack(void); stack(void); LinkNode* top; friend class List; void Push(const int& bool Pop(); bool IsEmpty(void)return(top=NULL)?true:false;/ list.cppStdAfx.h#using List:List(const int& x) first= new LinkNode(x);List(void) first= new LinkNo
2、de;List(void) makeEmpty();void List:input(int n) LinkNode * newNode; first=new LinkNode; for(int i=0;ilink=first-link; first-link=newNode; output(void) LinkNode *current=first- while(current!=NULL) coutdata coutlink!=NULL) p=first-link=p- delete p;inverse(void) stack s; LinkNode *p=first-link,*q; wh
3、ile(p! s.Push(p-data); p=p- p=first- while(!s.IsEmpty() q=s.top; p-data=q-data; s.Pop();/ Stack.cpp.stack.hstack:stack(void) top(NULL)stack(void)/入栈void stack:Push(const int& top=new LinkNode(x,top);/出栈bool stack:Pop() if(IsEmpty()=true) return false; LinkNode *p=top; top=top- delete p; return true;
4、/Main.cppstdafx.husing namespace System;int _tmain() srand(time(NULL); List l; /调用输入函数 l.input(10); /调用输出函数 l.output();调用逆转函数 l.inverse(); return 0;3.12编写一个算法,将一个非负的十进制整数N转换为另一个基为B的B进制数。/stack.hvoid Push(const int& bool Pop(int&/stack.cpp Pop(int& x=p-/main.cpp int n, m, temp,yu;输入十进制数: cin输入基数:m; s
5、tack l; while(n!=0 & m!=0) temp=n%m; n=n/m; l.Push(temp);l.IsEmpty() l.Pop(yu);yu; coutint f(int n1,int n2); int n1,n2;Enter the first positive number: n1;Enter the second positive number: n2; if(n10 & n20) n1 和 n2 的最大公约数是: f( n1, n2) else非法数据int f(int n1,int n2) int t; while(n2! t= n1 % n2; n1= n2;
6、 n2= t; return n1;3.23假设以数组Qm存放循环队列中的元素,同时设置一个标志tag,以tag=0和tag=1来区别在对头指针(front)和对尾指针(rear)相等时,队列状态为“空”还是“满”。试编写与此结构相应的插入(EnQueue)和删除(DeQueue)算法。/ stdafx.h#include/SeqQueue.hclass SeqQueue SeqQueue(int size=10); SeqQueue(void); int rear,front,tag; int *element; int maxSize; bool EnQueue(const int& bo
7、ol DeQueue(void); bool IsEmpty(void)return (front=rear & tag=0)? bool IsFull(void)return (front=rear & tag=1)? friend ostream& operator (ostream& os,SeqQueue& Q);/SeqQueue.cpp.SeqQueue.hSeqQueue:SeqQueue(int size)rear(0),front(0),tag(0),maxSize(size) element=new intmaxSize;SeqQueue(void) delete elem
8、ent;bool SeqQueue:EnQueue(const int& if(IsFull()=true) return false; elementrear=x; rear=(rear+1) % maxSize; tag=1;DeQueue(void) front=(front+1) % maxSize; tag=0;ostream& Q) int num; if(Q.front=Q.rear & Q.tag=1) num=Q.maxSize; num=(Q.rear-Q.front+Q.maxSize)%Q.maxSize;num; os(i+Q.front)%Q.maxSizeQ.el
9、ement(i+Q.front)%Q.maxSizet return os;srand(time(NULL); SeqQueue q;Call the EnQueue function9; q.EnQueue(rand()%100);qCall the DeQueue function q.DeQueue();第四章数组、串与广义表4.12若矩阵Am*n中的某一元素Aij是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵的一个鞍点。假设以二维数组存放矩阵,试编写一个函数,确定鞍点在数组中的位置(若鞍点存放在时),并分析该函数的时间复杂度。 int A1010,rsize,row,
10、column,maxC,minD,max,min; for(row=0;row10;row+) for (column=0;columncolumn+) Arowcolumn=rand()%(100/(10-row)+100/(10-column); coutArowcolumn for(rsize=0;rsizeArsizecolumn) minD=column; min=ArsizeminD; maxC=0; max=A0minD; for(row=1; if(maxArowminD) maxC=row; max=ArowminD; if(max=min) Arrayrsize+1minD
11、+1#ifndef stdafx_h#define stdafx_htemplatestruct LinkNode T data; LinkNode(const Tendifclass CCStack CCStack(void); CCStack(void); LinkNode* top; void Push(const T& T getTop();.cstack.hCCStackCCStack(void)CCStack(void)void CCStackPush(const T& top=new LinkNode(x,top);bool CCStackT CCStack return x
12、;.cstack.cpp string a; bool temp=true; int i=0; CCStack st;a; while(ai!=0) st.Push(ai); i+; i=0; if(ai=st.getTop() st.Pop(); i+; else temp=false; break; if(temp)此字符是回文此字符不是回文4.15编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。 int k,*num; char *A; k=a.length(); A = new chark; num = new intk; frequency(a, A, num,k=0 ); for ( int i = 0; i k; i+ )Ainumi个 delete A; delete num;void frequency( string s, char A , int C , int &k ) int i, j, len = s.length( ); A0 = s0; C0 = 1; /种类数 k = 1; for ( i = 1; len; Ci = 0; len
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1