问答题

【说明】 链表和栈对象的共同特征是:在数据上执行的操作与在每个对象中实体存储的基本类型无关。例如,一个栈存储实体后,只要保证最后存储的项最先用,最先存储的项最后用,则栈的操作可以从链表的操作中派生得到。程序6-1实现了链表的操作,程序6-2实现了栈操作。 import java.io.*; class Node //定义结点 { private String m_content; private Node m_next; Node(String str) { m_content=str; m_next=null; } Node(String str,Node next) { m_content=str; m_next=next; } String getData() //获取结点数据域 { return m_content;} void setNext(Node next] //设置下一个结点值 { m_next=next; } Node getNext() //返回下一个结点 { return m_next; ) } 【程序6-1】 class List { Node Head; List() { Head=null; } void insert(String str) //将数据str的结点插入在整个链表前面 { if(Head==null) Head=new Node(str); else (1) } void append(String str) //将数据str的结点插入在整个链表尾部 { Node tempnode=Head; it(tempnode==null) Heed=new Node(str); else { white(tempnode.getNext()!=null) (2) (3) } } String get() //移出链表第一个结点,并返回该结点的数据域 { Srting temp=new String(); if(Head==null) { System.out.println("Errow! from empty list!") System.exit(0); } else { temp=Head.getData(); (4) } return temp; } } 【程序6-2】 class Stack extends List { void push(String str) //进栈 { (5) } String pop() //出栈 { return get();} }

【参考答案】

Head=new Node(str,Head); (2)tempnode=tempnode.getNext(); (3)......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】 魔方阵,又叫幻方,在我国古代称为“纵横图”。由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。 奇数阶魔方阵的生成方法如下: (1)第一个位置在第一行正中。 (2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。 (3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为: 8 1 6 3 5 7 4 9 2 了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m, n。其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了 MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。 【程序】 #include <stdio.h> #define MAX 15 void main() { int n; int m=1; int i,j; int a[MAX][MAX]; printf( Please input the rank of matrix: ); scanf( %d ,&n); i=0; (1) while( (2) ) a[i][j]=m; m++; i--; j++; if((m-1)%n==0 && m>1) { (3) j=j-1; } if(j>(n-1)) 超出上界 (4) if(j>(n-1)) (5) } for(i=0;i<n;i++) 输出魔方阵 for(j=0;j<n;j++) { if(a[i][j] 10==0) printf( %d ,a[i][j]); 对程序无影响,只是使输出的数每一列对齐 else printf( %d ,a[i][j]); if(j==(n-1)) printf( n ); } }