Tuesday, April 13, 2021

20.58. Write a program that create, insert, and delete a two-way link list.

#include<stdio.h>
#include<conio.h>
include<stdlib.h>
struct node
{
int info;
struct node *next, *prev;
};
strict node *makenode (int n)
{
struct node t;
t=(struct node *)alloc(sizeof (struct node));
t->info=r;
t->next-NULL;
t->prev=NULL;
return t;
}
void makelist (struct node *list)
{
int i,n,num;
printf("How many node: "):
scanf ("%d", &n);
for (i=1; i<-n; i++)
{
scanf ("%d", &num);
list->next=makanode(num);
list->next->prev=list;
list=list->next;
}
}
void print list (struct node *list)
{
printf ("\list contains: \n");
while(list->rext!=NULL)
{
printf("%5d",list-next->info);
list=list->next;
}
}
int countlist (struct nede *list)
{
int count=0;
while (list->next!-NULL)
{
count++;
list=list->next;
}
return count;
}
void insert first (struct node *list)
{
int n;
struct node *t;
printf ("Enter any number to insert first: ";
scanf("%d", &n);
t=makenode(n);
list->next->prev=t;
t->prev=list;
t->next=list->next;
list->next=t;
}
void deletefirst (struct node *list)
{
struct node *t;
t=list->next->next;
free (list->next);
t->prev=list;
list->next=t;
}
void insert middle (struct node *list)
{
int i,n,count, p;
struct node *t;
count countlist(list);
printf("Enter any position to insert: ") ;
scanf ("%d", &p);
If (p<1 || p>count+1)
printf("Insert is impossible.");
else
{
for (i=1; i<p; i++) 
list=list->next;
printf("Enter any number to insert middle:”);
scanf ("%d", &n);
t=makenode(n);
list->next->prev=t;
t->prev=list;
t->next=list->next;
list->next=t;
}
}
void deletemiddle (struct node list)
{
struct node *t; 
int count, i,p;
count count list (list);
printf("Enter any position to delete middle: ");
scanf("%d", &p);
If (p<1 || p>count)
printf("Delete is impossible.");
else
{
for (i=1; i<p; i++)
list=list->next;
t=list->next->ext;
free list->next);
t->prev=list;
list->next=t;
}
}
void insertlast (struct node *list)
{
int n;
struct node *t;
printf("Enter any number to insert last: ";
scanf ("%d",&n);
t=makenode (n):
while (list->next!=NULL)
list-list->rext;
t->prev=list;
list->next=t;
}
void deletelast(struct node list)} 1
{
while (list->next->next!=NULL)
list=list->next;
free (list->next);
list->next=NULL;
}
void main ()
{
int n, choice;
struct node *list;
clrscr();
list=(struct node *)malloc(sizeof (struct nod makelist (1ist);
do
{
clrscr ():
print list (list);
printf("\r.Enter your cliocie from 1 to 7.");
printf("\r1. Insert First.");
printf("\r2. Insert Middle.");
printf("\r3. Insert Last.");
printf("\r4. Delete First.");
printf("\r5. Delete Middle.");
printf("\r6. Delete Last.");
printf("\r7. Exit\n");
scanf ("%d", &choice); 
switch (chcice)
{
case 1:
insertfirst (list);
break;
case 2:
insertmiddle (list);
break:
case 3:
insertlast (list);
break;
case 4:
deletefirst (list):
break;
case 5:
deletemiddle (list);
break;
case 6:
deletelist (list);
break:
case 7:
printf("\nThe program is now exit.");
printf("\nPress any key to continue”);
break;
default:
printf("\nYour choice out of range. ");
printf("\nPlease try again.");
print list (list);
getch ();
}
while(choice! =7);
}
 

 

No comments:

Post a Comment