2022/10/20
Solution
Data Structure
HTTPS://[Link]/SOFTWARE_ENG_ALAZHAR
SOFTWARE ENGINEERING
1- Given following data structure of Single linked list :
class ListNode
{ int item ;
ListNode next ;
….
}
Choose the correct answer :
A- Suppose reference refers to a node in a List (using the ListNode ) .
What statement changes reference so that it refers to the next node?
1- reference++ ;
2- reference = next ;
3- reference+= next ;
4- reference = [Link] ;
B- Suppose p refers to a node in a List (using the ListNode ) .
What boolean expression will be true when p refers to the last node of the
List?
1- (p == null)
2- ([Link] == null)
3- ([Link] == null)
4- ([Link] == 0)
5- None of the above.
C- Which boolean expression indicates whether the items in two nodes (n
and m) are the same. Assume that neither n nor m is null.
1- n == m
2- [Link] == [Link]
3- [Link] == [Link]
4- None of the above
2- Given following data structures of a double linked list :
class ListNode
{
String info ;
ListNode prev ;
ListNode next ;
…….
}
Write a Java method which prints the content of double linked list in reverse order.
Solution :
class LinkedList {
listNode N;
class listNode {
String info;
listNode prev;
listNode next;
public listNode(String info, listNode prev, listNode next) {
[Link] = info;
[Link] = prev;
[Link] = next;
}
public listNode(String info) {
this(info, null, null);
}
public listNode() {
this(null, null, null);
}
void reverse() {
listNode temp = null;
listNode current = N;
while (current != null) {
temp = [Link];
[Link] = [Link];
[Link] = temp;
current = [Link];
}
if (temp != null) {
N = [Link];
}
}
void add(String new_info) {
listNode new_node = new listNode(new_info);
new_node.prev = null;
new_node.next = N;
if (N != null) {
[Link] = new_node;
}
N = new_node;
}
void printList(listNode node) {
while (node != null) {
[Link]([Link] + " ");
node = [Link];
}
[Link]("");
}
public static void main(String[] args) {
LinkedList list = new LinkedList();
[Link]("A");
[Link]("B");
[Link]("C");
[Link]("D");
[Link]("Original linked list ");
[Link]();
[Link](list.N);
[Link]();
[Link]("");
[Link]("The reversed Linked List is ");
[Link](list.N);
[Link]("");
}
}
3- Given following ADT of a single linked list containing integer values :
class ListNode
{
int info;
ListNode link;
…
}
Write a JAVA method
which reads the values of a given single linked list and creates two lists, one list contains
the odd values and the other list contains the even values of the list.
Solution :
class LinkedList {
ListNode firstNode;
class ListNode {
int info;
ListNode link;
public ListNode(int info, ListNode link) {
[Link] = info;
[Link] = link;
}
public ListNode() {
this(0, null);
}
public ListNode(int info) {
this(info, null);
}
public int getInfo() {
return info;
}
public void print() {
ListNode N;
N = firstNode;
while (N != null) {
[Link]([Link]+" ");
N = [Link];
}
[Link]("");
}
public void newNode(int info) {
if ([Link] == null) {
}
ListNode newNode = new ListNode();
[Link] = info;
[Link] = [Link];
[Link] = newNode;
}
void add(int new_info) {
ListNode new_node = new ListNode(new_info);
new_node.link = firstNode;
firstNode = new_node;
}
public static void main(String[] args) {
LinkedList list = new LinkedList();
[Link](30);
[Link](4);
[Link](5);
[Link](17);
[Link](10);
LinkedList L1 = new LinkedList();
LinkedList L2 = new LinkedList();
[Link]("Original linked list ");
[Link]();
while([Link] != null ){
if([Link] % 2 == 0){
[Link]([Link]);
// [Link] = [Link];
}else{
[Link]([Link]);
}
[Link] = [Link];
}
[Link]("List even : ");
[Link]();
[Link]("List odd : ");
[Link]();
}
}
Solution by [Link]