1、算法与数据结构实验报告学院:计算机与信息学院专业班级:姓名:学号:实验一 栈和队列实验目的:掌握栈和队列特点、逻辑结构和存储结构熟悉对栈和队列的一些基本操作和具体的函数定义。利用栈和队列的基本操作完成一定功能的程序。实验任务:1.给出顺序栈的类定义和函数实现,利用栈的基本操作完成十进制数 N 与其它 d 进制数的转换。 (如 N=1357,d=8)实验原理:将十进制数 N 转换为八进制时,采用的是 “除取余数法”,即每次用 8 除 N 所得的余数作为八进制数的当前个位,将相除所得的商的整数部分作为新的 N 值重复上述计算,直到 N为 0 为止。此时,将前面所得到的各余数反过来连接便得到最后的转
2、换结果。程序清单:#include#includeusing namespace std;typedef int DATA_TYPE;const int MAXLEN=100;enum error_codesuccess,overflow,underflow;class stackpublic:stack();bool empty()const;error_code get_top(DATA_TYPE error_code push(const DATA_TYPE x);error_code pop();bool full()const;private:DATA_TYPE dataMAXLEN
3、;int count;stack:stack()count=0;bool stack:empty()constreturn count=0;error_code stack:get_top(DATA_TYPE elsex=datacount-1;return success;error_code stack:push(const DATA_TYPE x)if(full()return overflow;elsedatacount=x;count+;error_code stack:pop()if(empty()return underflow;elsecount-;return success
4、;bool stack:full()constreturn count=MAXLEN;void main()stack S;int N,d;coutNd;if(N=0)cout#includeusing namespace std;typedef int DATA_TYPE;const int MAXLEN=100;enum error_codesuccess,underflow,overflow;class queuepublic:queue();bool empty()const;error_code get_front(DATA_TYPE error_code append(const
5、DATA_TYPE x); error_code serve();bool full()const;private:int front,rear;DATA_TYPE dataMAXLEN;queue:queue()rear=0;front=0;bool queue:empty()constreturn (front%MAXLEN=rear%MAXLEN);error_code queue:get_front(DATA_TYPE elsex=datafront%MAXLEN;return success;error_code queue:append(const DATA_TYPE x) if(
6、full()return overflow;elsedatarear%MAXLEN=x;rear+;error_code queue:serve()if(empty()return underflow;elsefront+;return success;bool queue:full()constreturn(rear+1)%MAXLEN=front); void main()queue Q;int num1,num2;int i=0;cout#includeusing namespace std;typedef int DATA_TYPE;typedef struct LNodeDATA_T
7、YPE data;LNode *next;LNode;enum error_coderange_error,success,underflowclass linkstackpublic:linkstack();linkstack();bool empty()const;error_code push(const DATA_TYPE x);error_code get_top(DATA_TYPE error_code pop();private:LNode *top;int count;DATA_TYPE data;linkstack:linkstack()top=NULL;count=0;bo
8、ol linkstack:empty()constreturn (count=0);error_code linkstack:push(const DATA_TYPE x)LNode *s=new LNode;s-data=x;s-next=top;top=s;count+;return success;error_code linkstack:get_top(DATA_TYPE elsex=top-data;return success;error_code linkstack:pop()if(empty()return underflow;elseLNode *u=new LNode;u=
9、top;top=top-next;delete u;count-;return success;linkstack:linkstack()while(!empty()pop();void main()linkstack L;int n;coutn;for(int i=1;iusing namespace std;enum error_codesuccess,overflow,underflow,rangeerror;typedef int elementtype ;typedef struct LinkNode elementtype data; struct LinkNode *next;
10、node; class listprivate:int count;node *head;public:list();list();public:error_code get_element(const int i, elementtype node * get_head() const return head;void create();void display();void insert1(elementtype x);list:list()head = new node;head - next = NULL;count = 0;void list:create()elementtype
11、x; node *s,*rear;cin x;rear = head; while ( x != -9999 )count +;s = new node; s - data = x;s - next=NULL; rear - next = s; rear = s;cin x; void list:display() node *p;p=head-next;while (p!=NULL) coutdatanext;coutnext!=NULL if(P-next=NULL|P-next-datax) u=new node;u-data=x;u-next=P-next; P-next=u;count+;void main()list L;elementtype x;L.create();L.display();coutx; L.insert(x); L.display();运行结果:X=25