题目描述
已知一个有序链表类LinkSortList及main函数的部分代码如下,请完成LinkSortList类的成员函数,得到对应的运行结果,勿改动main函数。
//有序表类
template
class LinkSortList
{
public:
LinkSortList( ); //建立只有头结点的空链表
~LinkSortList(); //析构函数
void Insert(T x); //在有序单链表中插入元素x使序列仍有序
int Length(); //求表长
int DeleteOdd(); //在单链表中删除所有奇数,返回值为奇数个数
void DispList( ); //遍历有序单链表,按序号依次输出各元素
private:
Node
};
int main( ){
LinkSortList
int x;
while(1)
{
cin>>x;
if(!x)break;
sa.Insert(x);
}
sa.DispList();
int count=sa.DeleteOdd();
cout<<”Count of deleted odds:”<
return 0;
}
输入
输出
样例输入
样例输出
The length:8
The elements:1 5 7 32 34 42 56 233
Count of deleted odds:4
The length:4
The elements:32 34 42 56
提示
来源
提交
import java.util.Scanner;class Node {public Object data;public Node next;public Node() {this(null,null);}public Node(Object data) {this(data,null);}public Node(Object data, Node next) {this.data = data;this.next = next;}}class LinkSortList{private Node head;public LinkSortList() {this.head = new Node();}public int length() {Node p = head.next;int length = 0;while(p!=null){p = p.next;++length;}return length;}public void addByOrder(Node node){Node temp = head;boolean flag = false;while (true){if (temp.next==null){break;}else if ((int)temp.next.data>(int)node.data){break;}else if ((int)node.data == (int)temp.next.data){break;}else {temp = temp.next;}}node.next = temp.next;temp.next = node;}public void display() {System.out.println("The length:"+length());System.out.print("The elements:");Node node = head.next;while (node != null) {System.out.print(node.data + " ");node = node.next;}System.out.println();}public int deleteOdd(){int Odd = 0;Node node = head;while (node.next != null) {if((int)node.next.data%2!=0){node.next = node.next.next;Odd++;}else{node = node.next;}}return Odd;}}public class Main {public static void main(String[] args) {LinkSortList L = new LinkSortList();Scanner sc = new Scanner(System.in);while(sc.hasNext()){int d = sc.nextInt();if(d==0)break;try {L.addByOrder(new Node(d));} catch (Exception e) {e.printStackTrace();}}L.display();System.out.println("Count of deleted odds:"+L.deleteOdd());L.display();}}
