The document discusses implementation of linked lists in C programming language. It includes functions to create, insert, delete and display nodes in a linked list. The functions demonstrated are to insert nodes at the beginning, end or after a particular node. It also includes functions to delete nodes from the beginning, end or anywhere in the list. The main function uses a switch case to call these functions and operate on a linked list based on user input.
This document contains some programs of C using Data structures, like Stack, LinkedList, queue, Fibonacci series, addition and multiplication of two matrices,etc.
This document contains some programs of C using Data structures, like Stack, LinkedList, queue, Fibonacci series, addition and multiplication of two matrices,etc.
#include<iostream>
#include<cctype>
using namespace std;
class evalPostFix
{
public:
int s[50];
int top;
char str[50];
evalPostFix() {
top=-1;
}
void push(int val) {
top++;
s[top]=val;
}
int pop() {
int val=s[top];
top--;
return val;
}
int oper(int x,int y,char op) {
switch(op) {
case '+':return x+y;
case '-':return x-y;
case '*':return x*y;
case '/':return x/y;
default: return 0;
}
}
int calc();
};
int evalPostFix::calc() {
int i=0;
while(str[i]!='=') {
if(isdigit(str[i])) {
push(str[i]-'0');
}
else {
int x=pop();
int y=pop();
int r=oper(x,y,str[i]);
push(r);
}
i++;
}
return pop();
}
int main()
{
char answer;
evalPostFix eval;
do
{
cout<<"Enter a postfix expression:" << endl;
cin>>eval.str;
int r=eval.calc();
cout<<"Final Value : "<<r <<"\n";
cout << "Continue (Y or N)" << endl;
cin >> answer;
}
while(answer!='N');
system("pause");
}
Here is the output, but I do not want it to be like this.
I want the output to be like this
...
Exploiting Artificial Intelligence for Empowering Researchers and Faculty, In...Dr. Vinod Kumar Kanvaria
Exploiting Artificial Intelligence for Empowering Researchers and Faculty,
International FDP on Fundamentals of Research in Social Sciences
at Integral University, Lucknow, 06.06.2024
By Dr. Vinod Kumar Kanvaria
A workshop hosted by the South African Journal of Science aimed at postgraduate students and early career researchers with little or no experience in writing and publishing journal articles.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
Safalta Digital marketing institute in Noida, provide complete applications that encompass a huge range of virtual advertising and marketing additives, which includes search engine optimization, virtual communication advertising, pay-per-click on marketing, content material advertising, internet analytics, and greater. These university courses are designed for students who possess a comprehensive understanding of virtual marketing strategies and attributes.Safalta Digital Marketing Institute in Noida is a first choice for young individuals or students who are looking to start their careers in the field of digital advertising. The institute gives specialized courses designed and certification.
for beginners, providing thorough training in areas such as SEO, digital communication marketing, and PPC training in Noida. After finishing the program, students receive the certifications recognised by top different universitie, setting a strong foundation for a successful career in digital marketing.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
Executive Directors Chat Leveraging AI for Diversity, Equity, and InclusionTechSoup
Let’s explore the intersection of technology and equity in the final session of our DEI series. Discover how AI tools, like ChatGPT, can be used to support and enhance your nonprofit's DEI initiatives. Participants will gain insights into practical AI applications and get tips for leveraging technology to advance their DEI goals.
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
Datastructures asignment
1. /* IMPLEMENTATION OF THE STACK USING ARRAYS */
/* STACK_A.C */
# include<stdio.h>
# include<string.h>
# include<ctype.h>
#include<conio.h>
# define size 3
int top = -1;
int flag = 0;
int stack[size];
void push(int *, int);
int pop(int *);
void display(int *);
/* Definition of the push function */
void push(int s[], int d)
{
if(top ==(size-1))
flag = 0;
else
{ flag = 1;
++top;
s[top] = d;
}
}
/* Definition of the pop function */
int pop(int s[])
{ int popped_element;
if(top == -1)
{ popped_element = 0;
flag = 0;
}
else
{ flag = 1;
popped_element = s[top];
--top;
}
return (popped_element);
}
/* Definition of the display function */
void display(int s[])
{ int i;
if(top == -1)
printf("n Stack is empty");
else
{ for(i = top; i >= 0; --i)
printf("n %d", s[i] );
}
}
2. /* Function main */
void main()
{ int data;
char choice;
int q = 0;
int top = -1;
clrscr();
do
{ printf(" n enter i to insert");
printf(" n enter p to delete");
printf(" n enter q to quit");
printf("n enter your choice : ");
do
{ choice = getchar();
choice =tolower(choice);
}while(strchr("ipq",choice)==NULL);
switch(choice)
{
case 'i' : printf("n Input the element to push:");
scanf("%d", &data);
push(stack, data);
if(flag)
{ printf("n After inserting ");
display(stack);
if(top == (size-1))
printf("n Stack is full");
}
else printf("n Stack overflow after pushing");
break;
case 'p' : data = pop(stack);
if(flag)
{ printf("n Data is popped: %d", data);
printf("n Rest data in stack is as follows:n");
display(stack);
}
else printf("n Stack underflow" );
break;
case 'q': q = 1;
}
} while(!q);
}
3. /* THIS PROGRAM DEMONSTRATES THE STACK OPERATIONS USING OOPS-
CLASS STACK*/
/* cstack.cpp */
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class stack
{ int stack[30];
int top,n;
public:
stack()
{ top=-1; //indicates stack is empty
n=5;
}
void push(int);
int pop();
void display();
};
void stack::push(int x)
{ if(top<n)
{ top++;
stack[top]=x;
}
else cout<<"n the stack is full";
}
int stack::pop()
{ int v=-99;
if(top>=0)
{ v=stack[top];
top--;
}
return v;
}
void stack::display()
{ int i;
if(top>=0)
{ for(i=top;i>=0;i--)
cout<<stack[i]<<" ";
}
else cout<<"n stack is empty";
}
void main()
{ stack s;
char ch; int x;
clrscr();
do
{ cout<<"n enter i to insert an element";
cout<<"n enter d to view the contents";
cout<<"n enter r to remove an element";
4. cout<<"n enter q to quit";
cout<<"n enter your choice : ";
cin>>ch;
switch(ch)
{ case 'i': cout<<"n enter the value to insert";
cin>>x;
s.push(x);
break;
case 'd': cout<<"n";
s.display();
break;
case 'r': x=s.pop();
if(x==-99) cout<<"n stack is empty";
else cout<<" n the element removed is "<<x;
break;
}
}while(ch!='q');
}
OUTPUT:
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r
stack is empty
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i
enter the value to insert : 1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i
enter the value to insert : 2
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i
enter the value to insert : -1
5. enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : d
-1 2 1
enter the value to insert : 2
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : i
enter the value to insert : -1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : d
-1 2 1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r
the element removed is -1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r
the element removed is 2
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r
the element removed is 1
enter i to insert an element
enter d to view the contents
enter r to remove an element
enter q to quit
enter your choice : r
stack is empty
6. /*THE FOLLOWING PROGRAM CONVERTS ANY infix EXPRESSION TO POSTFIX
postfix.c */
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
int precedence(char op)
{
switch(op)
{
case '-':return 1;
case '+':return 1;
case '*':return 2;
case '/':return 2;
case '$':return 3;
case '(':return 0;
}
return -1;
}
void push(char a[],int *top,char ch)
{ a[*top]=ch;
(*top)++;
}
char pop(char a[],int *top)
{ *top=*top-1;
return a[*top];
}
void main()
{
int top=0,i=0,j=0,k,l,length=0;
char stack[50],infix[50],postfix[50];
char ch;
clrscr();
cout<<"Enter the infix expression : n";
scanf("%s",infix);
length=strlen(infix);
for(i=0;i<length;i++)
{
if(infix[i]=='(')
push(stack,&top,infix[i]);
if(isalpha(infix[i]))
{ postfix[j]=infix[i];
j++;
}
7. if(infix[i]==')')
{ while(stack[top-1]!='(')
{ postfix[j]=pop(stack,&top);
j++;
}
pop(stack,&top);
}
if(infix[i]=='+'||infix[i]=='-'||infix[i]=='/'||infix[i]=='*'||infix[i]=='$')
{ if(precedence(stack[top-1])<precedence(infix[i]))
push(stack,&top,infix[i]);
else
{ while(precedence(stack[top-1])>=precedence(infix[i]))
{ postfix[j]=pop(stack,&top);
j++;
}
push(stack,&top,infix[i]);
}
}
}
while(top!=0)
{ postfix[j]=pop(stack,&top);
j++;
}
cout<<"nThe postfix expression is :n";
for(k=0;k<j;k++)
cout<<postfix[k];
getch();
}
OUTPUT:
Enter the infix expression :
(((X*Y-A*B)-D/F)+A)*B
The postfix expression is :
XY*AB*-DF/-A+B*
do you want to continue (y/n) : y
Enter the infix expression :
A*B-P/(Q*(A-C+P*D)/B)
The postfix expression is :
AB*PQAC-PD*+*B//-
do you want to continue (y/n) : n
8. /* INSERTION AND DELETION IN A QUEUE ARRAY IMPLEMENTATION */
/* queue_a.c */
# include<stdio.h>
# include<string.h>
# include<ctype.h>
# include<stdlib.h>
# define size 5
int ch;
int q[size];
int rear = 0;
int front = 0;
void Insert_queue();
void Delete_queue();
void Display_queue();
/* Function to create queue */
void Insert_queue()
{ printf("n Input the element :");
scanf("%d", &ch);
if(rear < size)
{ rear ++;
q[rear] = ch ;
if(front == 0)
front = 1;
}
else printf("n Queue is overflow");
}
/* Function to perform delete operation */
void Delete_queue()
{ if (front == 0)
{ printf("n Underflow");
return ;
}
else
{ ch = q[front];
printf("n Element deleted : %d", ch);
}
if(front == rear)
{ front = 0;
rear = 0;
}
else front = front + 1;
}
9. /* Output function */
void Display_queue() //char q[])
{ int i;
if (front == 0)
return;
for(i = front ; i <= rear; i++)
printf(" %d ", q[i]);
}
/* Function main */
void main()
{
int k = 0;
char choice;
clrscr();
do
{ printf("nInsert->i Delete->d Quit->q:");
printf("nInput the choice : ");
do
{ choice = getchar();
choice = tolower(choice);
}while(strchr("idq",choice)==NULL);
switch(choice)
{
case 'i' : Insert_queue();
printf("n Queue after inserting ");
Display_queue();
break;
case 'd' : Delete_queue();
printf("n Queue after deleting:n");
Display_queue();
break;
case 'q': k = 1;
}
} while(!k);
}
10. /* THIS PROGRAM DEMONSTRATES OPERATIONS ON A CIRCULAR QUEUE
USING OOPS-CLASS QUEUE –cqueue.cpp*/
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
class queue
{ int q[30]; //queue declaration
int f,r ;
int n;
public:
queue() //constructor
{ f=r=0; //indicates queue is empty
n=5;
}
void insert(int);
int delet();
void display();
};
void queue::insert(int x)
{ if((r+1)%n==f)
cout<<"n the queue is full";
else
{ r=(r+1)%n;
q[r]=x;
}
}
int queue::delet()
{ int v=-99;
if(f!=r)
{ f=(f+1)%n;
v=q[f];
}
return v;
}
void queue::display()
{ int i;
if(f!=r)
{ i=f;
while(i!=r)
{ i=(i+1)%n;
cout<<q[i]<<" ";
}
}
else cout<<"n queue is empty";
}
void main()
{ queue s;
char ch;int x;
clrscr();
do
11. { cout<<"n enter i to insert an elemnt";
cout<<"n enter d to view the contents";
cout<<"n enter r to remove an elemnt";
cout<<"n enter q to quit";
cout<<"n enter your choice : ";
cin>>ch;
switch(ch)
{ case 'i': cout<<"n enter the value to insert";
cin>>x;
s.insert(x);
break;
case 'd': cout<<"n";
s.display();
break;
case 'r': x=s.delet();
if(x==-99) cout<<"n queue is empty";
else cout<<" n the element removed is "<<x;
break;
}
}while(ch!='q');
}
OUTPUT :
assume size of queue is 3 integers
Insert->i Delete->d Quit->q:
Input the choice : i
Input the element :1
Queue after inserting 1
Insert->i Delete->d Quit->q:
Input the choice : i
Input the element :2
Queue after inserting 1 2
Insert->i Delete->d Quit->q:
Input the choice : d
Element deleted : 1
Queue after deleting: 2
Insert->i Delete->d Quit->q:
Input the choice : d
Element deleted : 2
Queue after deleting:
queue is empty
Insert->i Delete->d Quit->q:
Input the choice : q
12. /* THIS PROGRAM DEMONSTRATES THE CREATION OF A SIMPLE LINKED LIST
INCORPORATING ALL FUNCTIONS OF INSERTION AND DELETION AT THE
BEGINNING , END AND AFTER ANY PARTICULAR NODE WITH DISPLAY FEATURES */
/* LINKLIST.C */
# include <stdio.h>
# include <malloc.h>
struct link
{ int info;
struct link *next;
};
int i,number;
struct link start, *previous, *new1;
void insertiona(struct link *);
void insertionb(struct link *);
void create_list(struct link *);
void insertione(struct link *);
void display(struct link *);
void delete_nodef(struct link *);
void delete_node(struct link *);
void delete_nodel(struct link *);
/* Function to create a linked list */
void create_list(struct link *node)
{ char ch;
start.next = NULL; /* Empty list */
node = &start; /* Point to the start of the list */
i = 0;
printf("n Input choice n for break: ");
ch = getchar();
while(ch != 'n')
{
node->next = (struct link* ) malloc(sizeof(struct link));
node = node->next;
printf("n Input the node: %d: ", i+1);
scanf("%d", &node->info);
node->next = NULL;
fflush(stdin);
printf("n Input choice n for break: ");
ch = getchar();
i++;
}
printf("n Total nodes = %d", i);
}
/* Inserting a node after a particular node*/
void insertiona(struct link *node)
{ int ins_node,x;
13. node = start.next;
previous = &start;
printf("n Input value of the nodeafter which you want to insert:");
scanf("%d", &ins_node);
while((node->info!=ins_node)&&(node!=NULL))
node=node->next;
if(node!=NULL)
{ new1 = (struct link* ) malloc(sizeof(struct link));
printf("n enter the new value to be inserted : ");
scanf(" %d",&new1->info);
new1->next = node->next;
node->next = new1;
}
else
printf("n insertion is not possible");
}
/* Display the list */
void display(struct link *node)
{ node = start.next;
while (node)
{ printf(" %d ", node->info);
node = node->next;
printf(" ");
}
}
void main()
{ int c;
struct link *node = (struct link *) malloc(sizeof(struct link));
clrscr();
do
{ printf("n enter 1 to create the list");
printf("n enter 2 to insert a node at the beginning");
printf("n enter 3 to insert a node anywhere");
printf("n enter 4 to append a node ");
printf("n enter 5 to display the list");
printf("n enter 6 to remove a node from beginning");
printf("n enter 7 to remove a node anywhere");
printf("n enter 8 to remove a node from the end");
printf("n enter 9 to quit");
printf("n enter your choice : ");
scanf("%d",&c);
switch(c)
{ case 1 : create_list(node);
printf("n Created list is as follows:n");
display(node);
break;
case 2 : insertionb(node);
14. break;
case 3 : insertiona(node);
break;
case 4 : display(node);
insertione(node);
break;
case 5 : display(node);
break;
case 6 : delete_nodef(node);
break;
case 7 : delete_node(node);
break;
case 8 : delete_nodel(node);
break;
case 9 : exit(0);
}
}while((c>=1)&&(c<=9));
getch();
}
/* Inserting a node at the beginning*/
void insertionb(struct link *node)
{ node = start.next;
previous = &start;
new1 = (struct link* ) malloc(sizeof(struct link));
new1->next = node ;
previous->next = new1;
printf("n Input the fisrt node value: ");
scanf("%d", &new1->info);
}
/* Inserting a node at the end */
void insertione(struct link *node)
{ node = start.next;
previous = &start;
if(node==NULL)
{ printf("n the list is empty to create return ");
return;
}
else
{ while(node->next!=NULL)
node = node->next;
new1 = (struct link* ) malloc(sizeof(struct link));
printf("n Input the value to be inserted at the end : ");
scanf(" %d",&new1->info);
node->next=new1;
new1->next=NULL;
}
}
/* Removing the first node */
15. void delete_nodef(struct link*node)
{ node = start.next;
previous = &start;
if (node == NULL)
printf("n Under flow");
else
{ previous->next = node->next;
free(node);
}
}
/* Removing a node when information is known*/
void delete_node(struct link *node)
{ int node_number = 1;
int del_node;
node = start.next;
previous = &start;
printf("n Input information of a node you want to delete: ");
scanf("%d", &del_node);
while(node)
{ if(node->info == del_node)
{ printf("n Position of the information in the list is : %d", node_number);
previous->next = node->next;
free(node);
break ;
}
else
{ node = node->next;
previous = previous->next;
}
node_number++;
}
}
/* Removing the last node */
void delete_nodel(struct link *node)
{ int node_number = 0;
node = start.next;
previous = &start;
if (node == NULL)
printf("n Underflow");
else
while(node)
{ node = node->next;
previous = previous->next;
node_number ++;
}
node = start.next;
previous = &start;