├── SY-BSC-CS-2023-Slips-Soultions ├── Slip-30 │ ├── emp.txt │ ├── Q1-10mks.c │ └── Q2-20marks.c ├── Slip-1 │ ├── a.out │ ├── Q1-10marks.c │ ├── Q2-20marks.c │ └── dublink.h └── 1696170164731.png ├── cities.txt ├── Recursive function practice ├── Intro.md ├── recursiveadd.c ├── factorial-recursuve.c ├── recursive-50naturalnum.c └── recursive function of n natural no up to n.c ├── LINK LIST ├── a.out ├── dublycir.c ├── merge.c ├── singlycircular.c ├── linkedlist-sahil.c └── linkmenu.c ├── Screenshot from 2023-07-06 19-39-50.png ├── Sahil └── Hi.c ├── random-int-print.c ├── st.c ├── reverse-each-word.c ├── linear.c ├── filehandling.c ├── File handling ├── filehandling.c ├── Menu2-file-sort.c └── menu-file.c ├── README.md ├── selection-short-names.c ├── insertionsort.c ├── stringsort(Bubble sort method).c ├── selection-sort-num.c ├── merge-sort.c ├── student structure sort by persentage(Bubble sort method).c ├── student structure sort by name(Bubble sort method).c ├── binarystring.c ├── numbersort(Bubble sort method).c ├── meargesort1.c ├── quicksort.c ├── check-palindrome-implimenting-stack.c ├── bubble sort names.c ├── binarynum.c ├── reverse-string-using-stack.c ├── meargesortnum.c ├── link list.c ├── emp structure binary search by id.c ├── linkedlist.c ├── emp structure binary search by emp name.c ├── first-linklist.c ├── check-palindrom-using-stack.c ├── Applications of Linked Llist ├── polynomial.c └── poly-evaluation.c ├── binarymenu.c ├── menu1.c ├── userheader.c ├── stack-menudriven.c ├── stack-string-menu.c ├── evaluation-postfix.c ├── postfix.c ├── linklist-menu3.c ├── linklist-menu.c ├── prefix1.c └── linklist-menu2.c /SY-BSC-CS-2023-Slips-Soultions/Slip-30/emp.txt: -------------------------------------------------------------------------------- 1 | om 23 598989 2 | -------------------------------------------------------------------------------- /cities.txt: -------------------------------------------------------------------------------- 1 | shrirampur 12345 2 | rampur 42738 3 | hokshd 739393 -------------------------------------------------------------------------------- /Recursive function practice/Intro.md: -------------------------------------------------------------------------------- 1 | recursive function practice 2 | -------------------------------------------------------------------------------- /LINK LIST/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SAHILDUDHAL21/Data-Structure-and-Algorithm-Sy-BCS-sem-3/HEAD/LINK LIST/a.out -------------------------------------------------------------------------------- /Screenshot from 2023-07-06 19-39-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SAHILDUDHAL21/Data-Structure-and-Algorithm-Sy-BCS-sem-3/HEAD/Screenshot from 2023-07-06 19-39-50.png -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/Slip-1/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SAHILDUDHAL21/Data-Structure-and-Algorithm-Sy-BCS-sem-3/HEAD/SY-BSC-CS-2023-Slips-Soultions/Slip-1/a.out -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/1696170164731.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SAHILDUDHAL21/Data-Structure-and-Algorithm-Sy-BCS-sem-3/HEAD/SY-BSC-CS-2023-Slips-Soultions/1696170164731.png -------------------------------------------------------------------------------- /Sahil/Hi.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int n,i; 5 | printf("Enter limit :"); 6 | scanf("%d",&n); 7 | 8 | for(i=1;i<=n;i++) 9 | printf("hi\t",i); 10 | } 11 | -------------------------------------------------------------------------------- /random-int-print.c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int n,a[100],i; 5 | printf("Enter limit :"); 6 | scanf("%d",&n); 7 | for(i=0;i 2 | int sum(int n) 3 | { 4 | if(n==0) 5 | return 0; 6 | 7 | return n+sum(n-1); 8 | } 9 | 10 | int main() 11 | { 12 | int n,a; 13 | printf("\n Enter Number"); 14 | scanf("%d",&n); 15 | 16 | a=sum(n); 17 | printf("Addition=%d",a); 18 | } -------------------------------------------------------------------------------- /Recursive function practice/factorial-recursuve.c: -------------------------------------------------------------------------------- 1 | #include 2 | int fact(int n) 3 | { 4 | if(n==0) 5 | return 1; 6 | 7 | return n*fact(n-1); 8 | } 9 | 10 | int main() 11 | { 12 | int n,a; 13 | printf("\n Enter Number"); 14 | scanf("%d",&n); 15 | 16 | a=fact(n); 17 | printf("factorial=%d",a); 18 | } -------------------------------------------------------------------------------- /Recursive function practice/recursive-50naturalnum.c: -------------------------------------------------------------------------------- 1 | //Write a program in C to print the first 50 natural numbers using recursion. 2 | #include 3 | int print(int n) 4 | { 5 | if(n<=50) 6 | { 7 | printf(" %d ",n); 8 | print(n+1); 9 | } 10 | } 11 | 12 | int main() 13 | { 14 | int n=1; 15 | printf("\n Natural Number up to 50"); 16 | 17 | 18 | print(n); 19 | } -------------------------------------------------------------------------------- /Recursive function practice/recursive function of n natural no up to n.c: -------------------------------------------------------------------------------- 1 | //Write a program in C to print the first n natural numbers using recursion. 2 | #include 3 | 4 | void print(int i, int n) 5 | { 6 | if(i <= n) 7 | { 8 | printf(" %d ", i); 9 | print(i + 1, n); 10 | } 11 | } 12 | 13 | int main() 14 | { 15 | int n; 16 | printf("Enter the value of n: "); 17 | scanf("%d", &n); 18 | 19 | printf("Natural Numbers up to %d:", n); 20 | print(1, n); 21 | 22 | return 0; 23 | } -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/Slip-1/Q1-10marks.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "dublink.h" 4 | 5 | int main() 6 | { 7 | int ch; 8 | struct node *list=NULL; 9 | do 10 | { 11 | printf("\n 1 : CREATE \n 2 : DISPLAY \n Enter Choice :: "); 12 | scanf("%d",&ch); 13 | 14 | switch(ch) 15 | { 16 | case 1 : list=create(list); 17 | break; 18 | case 2 : disp(list); 19 | break; 20 | default : printf("\nInvalid Choice."); 21 | } 22 | 23 | }while(ch<3); 24 | } 25 | -------------------------------------------------------------------------------- /st.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main() 5 | { 6 | int n, i, f = 0; 7 | char city[30][30], search[30]; 8 | 9 | printf("Enter the number of city: "); 10 | scanf("%d", &n); 11 | printf("\nEnter the names of city: \n"); 12 | for(i=0; i 2 | #include 3 | #include 4 | #include "/home/sahil/User_Header_File/stackchar.h" 5 | 6 | 7 | int main() 8 | { 9 | char s1[50]; 10 | int i; 11 | printf("Enter String to reverse each word :: "); 12 | gets(s1); 13 | 14 | init(); 15 | for(i=0;s1[i]!='\0';i++) 16 | { 17 | if(s1[i]==' ') 18 | { 19 | disp(); 20 | printf(" "); 21 | init(); 22 | 23 | } 24 | else 25 | { 26 | push(s1[i]); 27 | 28 | } 29 | } 30 | disp(); 31 | } 32 | -------------------------------------------------------------------------------- /linear.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct student 4 | { 5 | int rollno; 6 | char name[20]; 7 | float per; 8 | }s1[10]; 9 | int main() 10 | { 11 | int i,n; 12 | char name1[20]; 13 | printf("\nEnter Limit :: "); 14 | scanf("%d",&n); 15 | 16 | printf("\n Enter Rollno\tName\tPersentage of n Students\n"); 17 | for(i=0;i 2 | #include 3 | #include 4 | int main() 5 | { 6 | FILE *f1; 7 | struct city 8 | { 9 | int stdcode; 10 | char cname[20]; 11 | }c1[100]; 12 | int i,n; 13 | char key[20],last[20]; 14 | f1=fopen("cities.txt","r"); 15 | if(f1==NULL) 16 | { 17 | printf("File not found"); 18 | exit(0); 19 | } 20 | i=0; 21 | while(!feof(f1)) 22 | { 23 | fscanf(f1,"%s%d",&c1[i].cname,&c1[i].stdcode); 24 | i++; 25 | } 26 | n=i; 27 | printf("Enter city name to search"); 28 | scanf("%s",&key); 29 | strcpy(last,c1[n-1].cname); 30 | strcpy(c1[n-1].cname,key); 31 | i=0; 32 | while(strcmp(c1[i].cname,key)!=0) 33 | i++; 34 | if(i 2 | #include 3 | #include 4 | int main() 5 | { 6 | FILE *f1; 7 | struct city 8 | { 9 | int stdcode; 10 | char cname[20]; 11 | }c1[100]; 12 | int i,n; 13 | char key[20],last[20]; 14 | f1=fopen("cities.txt","r"); 15 | if(f1==NULL) 16 | { 17 | printf("File not found"); 18 | exit(0); 19 | } 20 | i=0; 21 | while(!feof(f1)) 22 | { 23 | fscanf(f1,"%s%d",&c1[i].cname,&c1[i].stdcode); 24 | i++; 25 | } 26 | n=i; 27 | printf("Enter city name to search"); 28 | scanf("%s",&key); 29 | strcpy(last,c1[n-1].cname); 30 | strcpy(c1[n-1].cname,key); 31 | i=0; 32 | while(strcmp(c1[i].cname,key)!=0) 33 | i++; 34 | if(i 6 | 7 | 8 | ![lambo](https://aleen42.github.io/badges/src/lamborghini.svg) 9 | ![bugatti](https://aleen42.github.io/badges/src/bugatti.svg) 10 | ![porsche](https://aleen42.github.io/badges/src/porsche.svg) 11 | ![land](https://aleen42.github.io/badges/src/land_rover.svg) 12 | ![mercedies](https://aleen42.github.io/badges/src/mercedes_benz.svg) 13 | ![koenigsegg](https://aleen42.github.io/badges/src/koenigsegg.svg) 14 | ![ferrari](https://aleen42.github.io/badges/src/ferrari.svg) 15 | ![totyya](https://aleen42.github.io/badges/src/toyota.svg) 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /selection-short-names.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() 4 | { 5 | int n,i,j,index; 6 | char min[20],t[20]; 7 | char s1[20][20]; 8 | printf("Enter Limit"); 9 | scanf("%d",&n); 10 | printf("Enter N Names In an array=\n"); 11 | for(i=0;i 2 | void accept(int a[],int n) 3 | { 4 | int i; 5 | printf("enter n number"); 6 | for(i=0;i=0&&num<=a[j];j--) 27 | { 28 | t=a[j+1]; 29 | a[j+1]=a[j]; 30 | a[j]=t; 31 | } 32 | } 33 | } 34 | 35 | int main() 36 | { 37 | int a[100],i,n; 38 | void insertion(int a[100],int n); 39 | printf("enter limit"); 40 | scanf("%d",&n); 41 | accept(a,n); 42 | insertion(a,n); 43 | display(a,n); 44 | } -------------------------------------------------------------------------------- /stringsort(Bubble sort method).c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() 4 | { 5 | int i,pass,n; 6 | char name[20][20],t[20]; 7 | 8 | printf("\n Enter Limit :: "); 9 | scanf("%d",&n); 10 | printf("\n Enter n Names ::"); 11 | for(i=0;i0) 19 | { 20 | strcpy(t,name[i]); 21 | strcpy(name[i],name[i+1]); 22 | strcpy(name[i+1],t); 23 | } 24 | } 25 | } 26 | printf("\n Names in Sorted Order :: \n "); 27 | for(i=0;i 2 | int main() 3 | { 4 | int[20],i, n,j,k,index,min; 5 | 6 | printf("\n Enter Limit :: "); 7 | scanf("%d",&n); 8 | 9 | for(i=0;i 2 | int n,a[20]; 3 | void mergesort(int low,int mid,int high) 4 | { 5 | int i,j,k,t[20]; 6 | i=low; 7 | j=mid+1; 8 | k=low; 9 | while(i<=mid&&j<=high) 10 | { 11 | if(a[i] 2 | #include 3 | struct student 4 | { 5 | int rno; 6 | char sname[20]; 7 | int per; 8 | }s1[20],temp; 9 | int main() 10 | { 11 | int i,n,pass; 12 | printf("enter limit:-"); 13 | scanf("%d",&n); 14 | for(i=0; i 2 | #include 3 | struct student 4 | { 5 | int rno; 6 | char sname[20]; 7 | int per; 8 | }s1[20],temp; 9 | int main() 10 | { 11 | int i,n,pass; 12 | printf("enter limit:-"); 13 | scanf("%d",&n); 14 | for(i=0; i0) 24 | { 25 | temp=s1[i]; 26 | s1[i]=s1[i+1]; 27 | s1[i+1]=temp; 28 | } 29 | } 30 | } 31 | printf("\n soarted structure= "); 32 | for(i=0; i 2 | #include 3 | int main() 4 | { 5 | char s1[20][20],cname[20]; 6 | int i,n,flag=0,top,mid,bottom; 7 | 8 | printf("enter limit:-"); 9 | scanf("%d",&n); 10 | 11 | printf("Enter n city name in soarted order :: "); 12 | 13 | for(i=0; i0) 32 | top=mid+1; 33 | else 34 | bottom=mid-1; 35 | } 36 | if(flag==1) 37 | printf("name is found"); 38 | else 39 | printf("name is not found"); 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /numbersort(Bubble sort method).c: -------------------------------------------------------------------------------- 1 | #include 2 | int main() 3 | { 4 | int s[20],i,t,n,pass; 5 | printf("Enter Limit :: "); 6 | scanf("%d",&n); 7 | 8 | printf("\n Enter n Numbers :: "); 9 | for(i=0;is[i+1]) 17 | { 18 | t=s[i]; 19 | s[i]=s[i+1]; 20 | s[i+1]=t; 21 | } 22 | } 23 | } 24 | printf("\n Number in Sorted Order :: \n"); 25 | for(i=1;i 2 | 3 | void accept(int a[],int n) 4 | { 5 | int i; 6 | printf("\n Enter N numbers"); 7 | for(i=0;i 2 | int a[20],n; 3 | 4 | int quicksort(int a[],int s,int e) 5 | { 6 | int pivot,next,prev,temp; 7 | pivot=a[s]; 8 | next=s+1; 9 | prev=e; 10 | 11 | do 12 | { 13 | while((a[next]pivot)&&(prev>s)) 18 | { 19 | prev--; 20 | } 21 | if(next 2 | #include 3 | #define MAX 100 4 | struct stack 5 | { 6 | char a[MAX]; 7 | int top; 8 | }s1; 9 | void init() 10 | { 11 | s1.top=-1; 12 | } 13 | int isfull() 14 | { 15 | if(s1.top==MAX-1) 16 | return 1; 17 | else 18 | return 0; 19 | } 20 | void push(char c) 21 | { 22 | if(isfull()) 23 | { 24 | printf("stack is full don't push.."); 25 | } 26 | else 27 | { 28 | s1.top++; 29 | s1.a[s1.top]=c; 30 | 31 | } 32 | 33 | } 34 | int check() 35 | { 36 | int i; 37 | char s5[100]; 38 | for(i=s1.top; i>=0; i--) 39 | { 40 | s5[i]=s1.a[i]; 41 | }s5[i]='\0'; 42 | if(strcmp(s1.a,s5)==0) 43 | return 1; 44 | else 45 | return 0; 46 | } 47 | int main() 48 | { 49 | char s[100]; 50 | int i; 51 | printf("enter string:-"); 52 | scanf("%s",s); 53 | init(); 54 | for(i=0; s[i]!='\0'; i++) 55 | { 56 | push(s[i]); 57 | } 58 | if(check()) 59 | printf("string is palindrome"); 60 | else 61 | printf("string is not palindrome"); 62 | 63 | } 64 | -------------------------------------------------------------------------------- /bubble sort names.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | int main() 4 | { 5 | int i,n,pass; 6 | char s[20][20],t[20]; 7 | printf("Enter Limit :: "); 8 | scanf("%d",&n); 9 | 10 | printf("\n Enter n Names :: "); 11 | for(i=0;i0) 19 | { 20 | strcpy(t,s[i]); 21 | strcpy(s[i],s[i+1]); 22 | strcpy(s[i+1],t); 23 | } 24 | } 25 | } 26 | printf("\n Names in Sorted Order :: \n"); 27 | for(i=0;i 2 | int main() 3 | { 4 | int a[100],i,n,num,flag=0; 5 | int search(int a[100],int num,int n); 6 | 7 | printf("enter limit:"); 8 | scanf("%d",&n); 9 | 10 | printf("enter n number to shorted order:"); 11 | for(i=0;ia[mid]) 39 | top=mid+1; 40 | else 41 | bott=mid-1; 42 | } 43 | return flag; 44 | } 45 | -------------------------------------------------------------------------------- /LINK LIST/dublycir.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | typedef struct node 4 | { 5 | int data; 6 | struct node *next,*prev; 7 | }NODE; 8 | #define NODEALLOC (NODE*)malloc(sizeof(NODE)) 9 | 10 | NODE *create(NODE *list) 11 | { 12 | int i,n; 13 | NODE *temp,*newnode; 14 | printf("Enter limit:"); 15 | scanf("%d",&n); 16 | for(i=0;idata); 21 | if(list==NULL) 22 | { 23 | list=temp=newnode; 24 | newnode->next=list; 25 | list->prev=newnode; 26 | } 27 | else 28 | { 29 | temp->next=newnode; 30 | newnode->prev=temp; 31 | temp=newnode; 32 | temp->next=list; 33 | list->prev=temp; 34 | } 35 | } 36 | return list; 37 | } 38 | void disp(NODE *list) 39 | { 40 | NODE *temp; 41 | temp=list; 42 | do 43 | { 44 | printf("%d\t",temp->data); 45 | temp=temp->next; 46 | }while(temp!=list); 47 | } 48 | int main() 49 | { 50 | NODE *list=NULL; 51 | list=create(list); 52 | disp(list); 53 | } 54 | -------------------------------------------------------------------------------- /reverse-string-using-stack.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define max 30 4 | 5 | struct stack 6 | { 7 | char s2[max]; 8 | int top; 9 | }s1; 10 | 11 | void init() 12 | { 13 | s1.top=-1; 14 | } 15 | 16 | int isempty() 17 | { 18 | if(s1.top==-1) 19 | return 1; 20 | else 21 | return 0; 22 | } 23 | 24 | int isfull() 25 | { 26 | if(s1.top==max-1) 27 | return 1; 28 | else 29 | return 0; 30 | } 31 | 32 | void push(char c) 33 | { 34 | if(isfull()) 35 | printf("Stack is full \t Don't Push::"); 36 | else 37 | { 38 | s1.top++; 39 | s1.s2[s1.top]=c; 40 | 41 | } 42 | } 43 | 44 | void disp() 45 | { 46 | int i; 47 | printf("Reverse String = "); 48 | for(i=s1.top;i>=0;i--) 49 | { 50 | printf("%c",s1.s2[i]); 51 | } 52 | } 53 | 54 | int main() 55 | { 56 | int i; 57 | char s[30]; 58 | init(); 59 | 60 | printf("\n Enter String :: "); 61 | scanf("%s",s); 62 | 63 | for(i=0;s[i]!='\0';i++) 64 | { 65 | push(s[i]); 66 | } 67 | 68 | disp(); 69 | } 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /meargesortnum.c: -------------------------------------------------------------------------------- 1 | #include 2 | void merge(int a[], int top, int mid, int bottom) 3 | { 4 | int i, j, k; 5 | int n1 = mid - top + 1; 6 | int n2 = bottom - mid; 7 | 8 | int b[n2],c[n1+n2]; 9 | 10 | /* Copy data to temp arrays L[] and R[] */ 11 | for (i = 0; i < n1; i++) 12 | a[i] = a[top + i]; 13 | for (j = 0; j < n2; j++) 14 | b[j] = a[mid + 1 + j]; 15 | 16 | i=j=k=0; 17 | while (i < n1 && j < n2) 18 | { 19 | if (a[i] 2 | #include 3 | #include 4 | struct node 5 | { 6 | int data; 7 | struct node *next; 8 | }; 9 | struct node* create(struct node *list) 10 | { 11 | struct node *temp,*newnode; 12 | int i,n; 13 | printf("enter limit:"); 14 | scanf("%d",&n); 15 | for(i=0; idata); 20 | newnode->next=NULL; 21 | if(list==NULL) 22 | { 23 | list=newnode; 24 | temp=newnode; 25 | } 26 | else 27 | { 28 | temp->next=newnode; 29 | temp=newnode; 30 | } 31 | 32 | } 33 | return list; 34 | } 35 | void disp(struct node *list) 36 | { 37 | struct node *temp; 38 | for(temp=list; temp!=NULL; temp=temp->next) 39 | { 40 | printf("%d\t",temp->data); 41 | } 42 | } 43 | int main() 44 | { 45 | struct node *list=NULL; 46 | int ch; 47 | clrscr(); 48 | do{ 49 | printf(" \n 1-create \n 2-display \n"); 50 | printf("\n enter choice:"); 51 | scanf("%d",&ch); 52 | switch(ch) 53 | { 54 | case 1:list=create(list); 55 | break; 56 | case 2:disp(list); 57 | break; 58 | } 59 | }while(ch<3); 60 | 61 | getch(); 62 | return 0; 63 | 64 | } -------------------------------------------------------------------------------- /emp structure binary search by id.c: -------------------------------------------------------------------------------- 1 | #include 2 | struct employee 3 | { 4 | int eid; 5 | char ename[20]; 6 | float sal; 7 | }e1[20]; 8 | int search_by_id(struct employee e1[20],int empid,int n); 9 | int main() 10 | { 11 | int i,n,empid,flag=0; 12 | 13 | 14 | printf("enter limit:"); 15 | scanf("%d",&n); 16 | 17 | printf("Enter n Records to shorted order:"); 18 | for(i=0;ie1[mid].eid) 46 | top=mid+1; 47 | else 48 | bott=mid-1; 49 | } 50 | return flag; 51 | } 52 | -------------------------------------------------------------------------------- /linkedlist.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | struct node* create(struct node *head) 12 | { 13 | int n,i; 14 | struct node *newnode,*temp; 15 | 16 | printf("\n Enter Limit :: "); 17 | scanf("%d",&n); 18 | 19 | for(i=-0;idata); 24 | 25 | newnode->next=NULL; 26 | 27 | if(head==NULL) 28 | { 29 | head=newnode; 30 | temp=newnode; 31 | } 32 | else 33 | { 34 | temp->next=newnode; 35 | temp=newnode; 36 | } 37 | } 38 | return head; 39 | } 40 | 41 | void display(struct node *head) 42 | { 43 | struct node *temp; 44 | 45 | for(temp=head;temp!=NULL;temp=temp->next) 46 | { 47 | printf("%d\t",temp->data); 48 | } 49 | } 50 | 51 | int main() 52 | { 53 | struct node *head=NULL; 54 | 55 | head=create(head); 56 | 57 | display(head); 58 | } -------------------------------------------------------------------------------- /emp structure binary search by emp name.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | struct employee 4 | { 5 | int eid; 6 | char ename[20]; 7 | float sal; 8 | }e1[20]; 9 | int search_by_id(struct employee e1[20],char name[20],int n); 10 | int main() 11 | { 12 | int i,n,flag=0; 13 | char name[20]; 14 | 15 | printf("enter limit:"); 16 | scanf("%d",&n); 17 | 18 | printf("\n Enter n Records to shorted order:\n "); 19 | for(i=0;i0) 47 | top=mid+1; 48 | else 49 | bottom=mid-1; 50 | } 51 | return flag; 52 | } 53 | -------------------------------------------------------------------------------- /first-linklist.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | struct node* create(struct node *head) 12 | { 13 | int n,i; 14 | struct node *newnode,*temp; 15 | 16 | printf("\n Enter Limit :: "); 17 | scanf("%d",&n); 18 | 19 | for(i=-0;idata); 24 | 25 | newnode->next=NULL; 26 | 27 | if(head==NULL) 28 | { 29 | head=newnode; 30 | temp=newnode; 31 | } 32 | else 33 | { 34 | temp->next=newnode; 35 | temp=newnode; 36 | } 37 | } 38 | return head; 39 | } 40 | 41 | void display(struct node *head) 42 | { 43 | struct node *temp; 44 | 45 | for(temp=head;temp!=NULL;temp=temp->next) 46 | { 47 | printf("%d\t",temp->data); 48 | } 49 | } 50 | 51 | int main() 52 | { 53 | struct node *head=NULL; 54 | 55 | head=create(head); 56 | 57 | display(head); 58 | } 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /check-palindrom-using-stack.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define max 30 4 | 5 | struct stack 6 | { 7 | char a[max]; 8 | int top; 9 | }s1; 10 | 11 | void init() 12 | { 13 | s1.top=-1; 14 | } 15 | 16 | int isempty() 17 | { 18 | if(s1.top==-1) 19 | return 1; 20 | else 21 | return 0; 22 | } 23 | 24 | int isfull() 25 | { 26 | if(s1.top==max-1) 27 | return 1; 28 | else 29 | return 0; 30 | } 31 | 32 | void push(char c) 33 | { 34 | if(isfull()) 35 | printf("Stack is full \t Don't Push::"); 36 | else 37 | { 38 | s1.top++; 39 | s1.a[s1.top]=c; 40 | 41 | } 42 | } 43 | 44 | char pop() 45 | { 46 | char ch; 47 | if(isempty()) 48 | printf("\n Stack is empty......"); 49 | else 50 | { 51 | ch=s1.a[s1.top]; 52 | s1.top--; 53 | return ch; 54 | } 55 | } 56 | 57 | int main() 58 | { 59 | char s[30]; 60 | int i; 61 | printf("Enter string :"); 62 | gets(s); 63 | init(); 64 | for(i=0;s[i]!='\0';i++) 65 | { 66 | push(s[i]); 67 | } 68 | for(i=0;s[i]!='\0';i++) 69 | { 70 | if(s[i]!=pop()) 71 | break; 72 | } 73 | if(isempty()) 74 | printf("\n String is Palindrome.........\n"); 75 | else 76 | printf("\n String is not Palindrome......\n"); 77 | } 78 | -------------------------------------------------------------------------------- /Applications of Linked Llist/polynomial.c: -------------------------------------------------------------------------------- 1 | //Sahil Dudhal 2 | 3 | #include 4 | #include 5 | 6 | #define Memory (NODE*)malloc(sizeof(NODE)) 7 | 8 | typedef struct node 9 | { 10 | int coef; 11 | int expo; 12 | struct node *next; 13 | }NODE; 14 | 15 | 16 | NODE *create(NODE *list) 17 | { 18 | NODE *newnode, *temp; 19 | int n,i; 20 | printf("Enter Limit :: "); 21 | scanf("%d",&n); 22 | for(i=n-1;i>=0;i--) 23 | { 24 | newnode=Memory; 25 | printf("ENTER COEF :: "); 26 | scanf("%d",&newnode->coef); 27 | newnode->expo=i; 28 | newnode->next=NULL; 29 | 30 | if(list==NULL) 31 | { 32 | list=temp=newnode; 33 | } 34 | else 35 | { 36 | temp->next=newnode; 37 | temp=newnode; 38 | } 39 | } 40 | return list; 41 | } 42 | 43 | 44 | void disp(NODE *list) 45 | { 46 | NODE *temp; 47 | for(temp=list;temp!=NULL;temp=temp->next) 48 | { 49 | printf("%dx^%d +",temp->coef,temp->expo); 50 | } 51 | printf("\b"); 52 | } 53 | 54 | 55 | int main() 56 | { 57 | NODE *list=NULL; 58 | list=create(list); 59 | disp(list); 60 | } 61 | -------------------------------------------------------------------------------- /binarymenu.c: -------------------------------------------------------------------------------- 1 | /*Write a menu driver program using functions: 2 | 1)accept n student info 3 | 2)dispAll() 4 | 3)searchbyno(int num) 5 | 4)searchbyname(char name[20]) 6 | 5)maxperstud() 7 | 6)averageper() 8 | */ 9 | struct student 10 | { 11 | int rno; 12 | char name[20]; 13 | int per; 14 | }s1[100]; 15 | int i,n; 16 | int main() 17 | { 18 | int ch; 19 | do 20 | { 21 | printf("\n 1-accept \n 2-disp All \n 3-sear by no \n 4-search by name :"); 22 | printf("\n 5-MAx per \n 6-Average per \n Enter choice:"); 23 | scanf("%d",&ch); 24 | switch(ch) 25 | { 26 | case 1:accept(); break; 27 | case 2:dispAll(); break; 28 | case 3:printf("Enter number to search:"); 29 | scanf("%d",&num); 30 | searchbyno(num); 31 | break; 32 | case 4:printf("Enter name to search:"); 33 | scanf("%s",&nm); 34 | searchbyname(nm); 35 | break; 36 | case 5: disp_max(); break; 37 | case 6: disp_avg_per(); break; 38 | default: printf("\n Invalid Choice....."); 39 | } 40 | }while(ch<7); 41 | getch(); 42 | } 43 | void accept() 44 | { 45 | printf("Enter limit:"); 46 | scanf("%d",&n); 47 | for(i=0;i 2 | 3 | int main() 4 | { 5 | int a[100],n,i,ch; 6 | void insertion(int a[100],int n); 7 | void bubble(int a[100],int n); 8 | void linear(int a[100],int n,int num); 9 | void binary(int a[100],int n,int num); 10 | 11 | printf("enter limit:-"); 12 | scanf("%d",&n); 13 | printf("enter n numbers in an array:-"); 14 | for(i=0; i=0&&numa[i+1]) 66 | { 67 | t=a[i]; 68 | a[i]=a[i+1]; 69 | a[i+1]=t; 70 | } 71 | } 72 | 73 | } 74 | printf("\n bubble sorted="); 75 | for(i=0; i 2 | #include 3 | struct Emp 4 | { 5 | char ename[20]; 6 | int age,sal; 7 | }e1[100],t; 8 | void bubble(struct Emp e1[],int n) 9 | { 10 | int i,pass; 11 | for(pass=1;passe1[i+1].age) 16 | { 17 | t=e1[i]; 18 | e1[i]=e1[i+1]; 19 | e1[i+1]=t; 20 | } 21 | } 22 | } 23 | printf("\n Bubble Sort\n"); 24 | for(i=0;i=0&&key 2 | #include 3 | #include 4 | #include "/home/sahil/User_Header_File/stackchar.h" 5 | 6 | #define max 50 7 | 8 | 9 | 10 | int main() 11 | { 12 | char exp[50],prefix[50]; 13 | char exp1[50],x; 14 | int i,j=0; 15 | 16 | 17 | printf("\n Enter The Infix Expression :: "); 18 | scanf("%s",exp); 19 | reverseString(exp); 20 | 21 | for(i=0;exp[i]!='\0';i++) 22 | { 23 | if(exp[i]=='(') 24 | exp[i]=')'; 25 | else if(exp[i]==')') 26 | exp[i]='('; 27 | } 28 | 29 | init(); 30 | for(i=0;exp[i]!='\0';i++) 31 | { 32 | if(isalnum(exp[i])) 33 | prefix[j++]=exp[i]; 34 | else if(exp[i] == '(') 35 | push(exp[i]); 36 | else if (exp[i] == ')') 37 | { 38 | while((x=pop()) != '(') 39 | prefix[j++]=x; 40 | } 41 | else 42 | { 43 | while(pri(s.a[s.top]) >= pri(exp[i])) 44 | prefix[j++]=pop(); 45 | push(exp[i]); 46 | } 47 | 48 | } 49 | while(!isempty()) 50 | prefix[j++]=pop(); 51 | 52 | prefix[j]='\0'; 53 | reverseString(prefix); 54 | printf("\n prefix expression=%s",prefix); 55 | 56 | } 57 | -------------------------------------------------------------------------------- /LINK LIST/merge.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | typedef struct node 4 | { 5 | int data; 6 | struct node *next; 7 | }NODE; 8 | struct node *create(struct node *list) 9 | { 10 | int i,n; 11 | struct node *newnode,*temp; 12 | printf("Enter limit:"); 13 | scanf("%d",&n); 14 | for(i=0;idata); 19 | newnode->next=NULL; 20 | if(list==NULL) 21 | { 22 | list=newnode; 23 | temp=newnode; 24 | } 25 | else 26 | { 27 | temp->next=newnode; 28 | temp=newnode; 29 | } 30 | } 31 | return list; 32 | } 33 | void disp(struct node *list) 34 | { 35 | struct node *temp; 36 | for(temp=list;temp!=NULL;temp=temp->next) 37 | { 38 | printf("%d\t",temp->data); 39 | } 40 | } 41 | NODE * append(NODE *list,int num) 42 | { 43 | NODE *newnode,*temp; 44 | newnode=(NODE*)malloc(sizeof(NODE)); 45 | newnode->data=num; 46 | newnode->next=NULL; 47 | if(list==NULL) 48 | { 49 | return newnode; 50 | } 51 | else 52 | { 53 | for(temp=list;temp->next!=NULL;temp=temp->next); 54 | temp->next=newnode; 55 | return list; 56 | } 57 | } 58 | NODE *merge(NODE *list1,NODE *list2) 59 | { 60 | NODE *temp1=list1,*temp2=list2,*list3=NULL; 61 | while(temp1!=NULL&&temp2!=NULL) 62 | { 63 | if(temp1->datadata) 64 | { 65 | list3=append(list3,temp1->data); 66 | temp1=temp1->next; 67 | } 68 | else 69 | { 70 | list3=append(list3,temp2->data); 71 | temp2=temp2->next; 72 | } 73 | } 74 | while(temp1!=NULL) 75 | { 76 | list3=append(list3,temp1->data); 77 | temp1=temp1->next; 78 | } 79 | while(temp2!=NULL) 80 | { 81 | list3=append(list3,temp2->data); 82 | temp2=temp2->next; 83 | } 84 | return list3; 85 | } 86 | int main() 87 | { 88 | NODE *list1=NULL,*list2=NULL,*list3=NULL; 89 | list1=create(list1); 90 | list2=create(list2); 91 | list3=merge(list1,list2); 92 | disp(list3); 93 | } -------------------------------------------------------------------------------- /File handling/menu-file.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | struct Emp 5 | { 6 | char ename[20]; 7 | int age,sal; 8 | }e1[100],t; 9 | void bubble(struct Emp e1[],int n) 10 | { 11 | int i,pass; 12 | for(pass=1;pass0) 17 | { 18 | t=e1[i]; 19 | e1[i]=e1[i+1]; 20 | e1[i+1]=t; 21 | } 22 | } 23 | } 24 | printf("\n Bubble Sort\n"); 25 | for(i=0;i=0&&strcmp(key,e1[j].ename)<0;j--) 38 | { 39 | t=e1[j+1]; 40 | e1[j+1]=e1[j]; 41 | e1[j]=t; 42 | } 43 | } 44 | printf("\n Insertion Sort\n"); 45 | for(i=0;i 2 | #include 3 | typedef struct node 4 | { 5 | int data; 6 | struct node *next; 7 | }NODE; 8 | struct node *create(struct node *list) 9 | { 10 | int i,n; 11 | struct node *newnode,*temp; 12 | printf("Enter limit:"); 13 | scanf("%d",&n); 14 | for(i=0;idata); 19 | newnode->next=NULL; 20 | if(list==NULL) 21 | { 22 | list=newnode; 23 | temp=newnode; 24 | } 25 | else 26 | { 27 | temp->next=newnode; 28 | temp=newnode; 29 | } 30 | } 31 | return list; 32 | } 33 | void disp(struct node *list) 34 | { 35 | struct node *temp; 36 | for(temp=list;temp!=NULL;temp=temp->next) 37 | { 38 | printf("%d\t",temp->data); 39 | } 40 | } 41 | NODE * append(NODE *list,int num) 42 | { 43 | NODE *newnode,*temp; 44 | newnode=(NODE*)malloc(sizeof(NODE)); 45 | newnode->data=num; 46 | newnode->next=NULL; 47 | if(list==NULL) 48 | { 49 | return newnode; 50 | } 51 | else 52 | { 53 | for(temp=list;temp->next!=NULL;temp=temp->next); 54 | temp->next=newnode; 55 | return list; 56 | } 57 | } 58 | NODE *merge(NODE *list1,NODE *list2) 59 | { 60 | NODE *temp1=list1,*temp2=list2,*list3=NULL; 61 | while(temp1!=NULL&&temp2!=NULL) 62 | { 63 | if(temp1->datadata) 64 | { 65 | list3=append(list3,temp1->data); 66 | temp1=temp1->next; 67 | } 68 | else 69 | { 70 | list3=append(list3,temp2->data); 71 | temp2=temp2->next; 72 | } 73 | } 74 | while(temp1!=NULL) 75 | { 76 | list3=append(list3,temp1->data); 77 | temp1=temp1->next; 78 | } 79 | while(temp2!=NULL) 80 | { 81 | list3=append(list3,temp2->data); 82 | temp2=temp2->next; 83 | } 84 | return list3; 85 | } 86 | int main() 87 | { 88 | NODE *list1=NULL,*list2=NULL,*list3=NULL; 89 | list1=create(list1); 90 | list2=create(list2); 91 | list3=merge(list1,list2); 92 | disp(list3); 93 | } 94 | -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/Slip-30/Q2-20marks.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | struct Emp 5 | { 6 | char ename[20]; 7 | int age,sal; 8 | }e1[100],t; 9 | void bubble(struct Emp e1[],int n) 10 | { 11 | int i,pass; 12 | for(pass=1;pass0) 17 | { 18 | t=e1[i]; 19 | e1[i]=e1[i+1]; 20 | e1[i+1]=t; 21 | } 22 | } 23 | } 24 | printf("\n Bubble Sort\n"); 25 | for(i=0;i=0&&strcmp(key,e1[j].ename)<0;j--) 38 | { 39 | t=e1[j+1]; 40 | e1[j+1]=e1[j]; 41 | e1[j]=t; 42 | } 43 | } 44 | printf("\n Insertion Sort\n"); 45 | for(i=0;i 2 | #define max 7 3 | 4 | struct stack 5 | { 6 | int a[30]; 7 | int top; 8 | }s1; 9 | 10 | void init() 11 | { 12 | s1.top=-1; 13 | } 14 | 15 | int isempty() 16 | { 17 | if(s1.top==-1) 18 | return 1; 19 | else 20 | return 0; 21 | } 22 | 23 | int isfull() 24 | { 25 | if(s1.top==max-1) 26 | return 1; 27 | else 28 | return 0; 29 | } 30 | 31 | void push(int num) 32 | { 33 | if(isfull()) 34 | printf("Stack is full \t Don't Push::"); 35 | else 36 | { 37 | s1.top++; 38 | s1.a[s1.top]=num; 39 | printf("Push Successfully :: "); 40 | } 41 | } 42 | 43 | void pop() 44 | { 45 | int val; 46 | if (isempty()) 47 | printf("Stack is Empty \t can't pop"); 48 | else 49 | { 50 | val=s1.a[s1.top]; 51 | s1.top--; 52 | printf("\n Poped Value = %d",val); 53 | } 54 | } 55 | 56 | void disp() 57 | { 58 | int i; 59 | for(i=s1.top;i>=0;i--) 60 | { 61 | printf("%d \n",s1.a[i]); 62 | } 63 | } 64 | 65 | int main() 66 | { 67 | int ch,num; 68 | init(); 69 | 70 | do 71 | { 72 | printf("\n 1 : PUSH (Insert Value). \n 2 : POP (Delete Value). \n 3 : DISPLAY\n"); 73 | printf("\n Enter choice::"); 74 | scanf("%d",&ch); 75 | 76 | switch(ch) 77 | { 78 | case 1 : printf("Enter Number to Insert"); 79 | scanf("%d",&num); 80 | push(num); 81 | break; 82 | case 2 : pop(); 83 | break; 84 | case 3 : disp(); 85 | break; 86 | default : printf("Invalid Choice......."); 87 | } 88 | }while(ch<4); 89 | } 90 | 91 | -------------------------------------------------------------------------------- /stack-string-menu.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define max 7 4 | 5 | struct stack 6 | { 7 | char s2[30][30]; 8 | int top; 9 | }s1; 10 | 11 | void init() 12 | { 13 | s1.top=-1; 14 | } 15 | 16 | int isempty() 17 | { 18 | if(s1.top==-1) 19 | return 1; 20 | else 21 | return 0; 22 | } 23 | 24 | int isfull() 25 | { 26 | if(s1.top==max-1) 27 | return 1; 28 | else 29 | return 0; 30 | } 31 | 32 | void push(char name[30]) 33 | { 34 | if(isfull()) 35 | printf("Stack is full \t Don't Push::"); 36 | else 37 | { 38 | s1.top++; 39 | strcpy(s1.s2[s1.top],name); 40 | printf("Push Successfully :: "); 41 | } 42 | } 43 | 44 | void pop() 45 | { 46 | char val[30]; 47 | if (isempty()) 48 | printf("Stack is Empty \t can't pop"); 49 | else 50 | { 51 | strcpy(val,s1.s2[s1.top]); 52 | s1.top--; 53 | printf("\n Poped Value = %s",val); 54 | } 55 | } 56 | 57 | void disp() 58 | { 59 | int i; 60 | for(i=s1.top;i>=0;i--) 61 | { 62 | printf("%s \n",s1.s2[i]); 63 | } 64 | } 65 | 66 | int main() 67 | { 68 | int ch; 69 | char name[30]; 70 | init(); 71 | 72 | do 73 | { 74 | printf("\n 1 : PUSH (Insert Value). \n 2 : POP (Delete Value). \n 3 : DISPLAY\n"); 75 | printf("\n Enter choice::"); 76 | scanf("%d",&ch); 77 | 78 | switch(ch) 79 | { 80 | case 1 : printf("Enter name to Insert"); 81 | scanf("%s",name); 82 | push(name); 83 | break; 84 | case 2 : pop(); 85 | break; 86 | case 3 : disp(); 87 | break; 88 | default : printf("Invalid Choice......."); 89 | } 90 | }while(ch<4); 91 | } 92 | 93 | -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/Slip-1/Q2-20marks.c: -------------------------------------------------------------------------------- 1 | // Q2. Write a program that sorts the elements of linked list using any of sorting technique 2 | 3 | #include 4 | #include 5 | 6 | typedef struct node 7 | { 8 | int data; 9 | struct node *next; 10 | }NODE; 11 | 12 | NODE* create(NODE *head) 13 | { 14 | int n,i; 15 | NODE *newnode,*temp; 16 | 17 | printf("\n Enter Limit :: "); 18 | scanf("%d",&n); 19 | 20 | for(i=-0;idata); 25 | 26 | newnode->next=NULL; 27 | 28 | if(head==NULL) 29 | { 30 | head=newnode; 31 | temp=newnode; 32 | } 33 | else 34 | { 35 | temp->next=newnode; 36 | temp=newnode; 37 | } 38 | } 39 | return head; 40 | } 41 | 42 | void display(NODE *head) 43 | { 44 | NODE *temp; 45 | 46 | for(temp=head;temp!=NULL;temp=temp->next) 47 | { 48 | printf("%d\t",temp->data); 49 | } 50 | } 51 | 52 | 53 | NODE *Bubblesort(NODE *head) 54 | { 55 | NODE *temp1,*temp; 56 | int t; 57 | for(temp1=head;temp1!=NULL;temp1=temp1->next) 58 | { 59 | for(temp=head;temp!=NULL;temp=temp->next) 60 | { 61 | if((temp->data)>(temp->next->data)) 62 | { 63 | t=temp->data; 64 | temp->data=temp->next->data; 65 | temp->next->data=t; 66 | } 67 | } 68 | } 69 | return head; 70 | } 71 | 72 | int main() 73 | { 74 | NODE *head=NULL; 75 | head=create(head); 76 | display(head); 77 | printf("\nSorted Elements= \n\n"); 78 | head=Bubblesort(head); 79 | display(head); 80 | } 81 | -------------------------------------------------------------------------------- /Applications of Linked Llist/poly-evaluation.c: -------------------------------------------------------------------------------- 1 | //Sahil Dudhal 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #define Memory (NODE*)malloc(sizeof(NODE)) 8 | 9 | typedef struct node 10 | { 11 | int coef; 12 | int expo; 13 | struct node *next; 14 | }NODE; 15 | 16 | 17 | NODE *create(NODE *list) 18 | { 19 | NODE *newnode, *temp; 20 | int n,i; 21 | printf("\nEnter Limit :: "); 22 | scanf("%d",&n); 23 | for(i=n-1;i>=0;i--) 24 | { 25 | newnode=Memory; 26 | printf("ENTER COEF :: "); 27 | scanf("%d",&newnode->coef); 28 | newnode->expo=i; 29 | newnode->next=NULL; 30 | 31 | if(list==NULL) 32 | { 33 | list=temp=newnode; 34 | } 35 | else 36 | { 37 | temp->next=newnode; 38 | temp=newnode; 39 | } 40 | } 41 | return list; 42 | } 43 | 44 | 45 | void disp(NODE *list) 46 | { 47 | NODE *temp; 48 | 49 | printf("\n The Entered Polynomial is :: "); 50 | for(temp=list;temp!=NULL;temp=temp->next) 51 | { 52 | printf("%dx^%d +",temp->coef,temp->expo); 53 | } 54 | printf("\b "); 55 | } 56 | 57 | 58 | float evaluate(NODE *list,int x) 59 | { 60 | float ans=0; 61 | NODE *temp; 62 | for(temp=list;temp!=NULL;temp=temp->next) 63 | { 64 | ans=ans+(temp->coef)*pow(x,temp->expo); 65 | } 66 | return ans; 67 | } 68 | 69 | int main() 70 | { 71 | float value; 72 | int x; 73 | NODE *list=NULL; 74 | list=create(list); 75 | disp(list); 76 | 77 | printf("\n\nEnter Value of x :: "); 78 | scanf("%d",&x); 79 | value=evaluate(list,x); 80 | printf("\nThe Answer of the expression is :: %f",value); 81 | } 82 | -------------------------------------------------------------------------------- /evaluation-postfix.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "/home/sahil/User_Header_File/stackint.h" 6 | 7 | int main() 8 | { 9 | int i,p,q,r,s,val1,val2,result,re; 10 | char a[50],ch; 11 | 12 | init(); 13 | 14 | printf("\n Enter Postfix Expresion ::"); 15 | gets(a); 16 | 17 | printf("\n Enter values of \n"); 18 | printf("\t P\t="); scanf("%d",&p); 19 | printf("\t Q\t="); scanf("%d",&q); 20 | printf("\t R\t="); scanf("%d",&r); 21 | printf("\t S\t="); scanf("%d",&s); 22 | 23 | for(i=0;a[i]!='\0';i++) 24 | { 25 | if(isalpha(a[i])) 26 | { 27 | switch(a[i]) 28 | { 29 | case 'P' : push(p); 30 | break; 31 | case 'Q' : push(q); 32 | break; 33 | case 'R' : push(r); 34 | break; 35 | case 'S' : push(s); 36 | break; 37 | } 38 | 39 | } 40 | else 41 | { 42 | val1=pop(); 43 | val2=pop(); 44 | switch(a[i]) 45 | { 46 | case '+' : result=val2 + val1; break; 47 | case '-' : result=val2 - val1; break; 48 | case '*' : result=val2 * val1; break; 49 | case '/' : result=val2 / val1; break; 50 | case '%' : result=val2 % val1; break; 51 | case '^' : result=val2 ^ val1; break; 52 | 53 | 54 | } push(result); 55 | 56 | } 57 | } 58 | 59 | printf(" \n Result =%d ",pop()); 60 | } 61 | -------------------------------------------------------------------------------- /postfix.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define max 50 4 | 5 | struct stack 6 | { 7 | char a[max]; 8 | int top; 9 | }s; 10 | 11 | void init() 12 | { 13 | s.top=-1; 14 | } 15 | 16 | int isempty() 17 | { 18 | if(s.top==-1) 19 | return 1; 20 | else 21 | return 0; 22 | } 23 | 24 | int isfull() 25 | { 26 | if(s.top==max-1) 27 | return 1; 28 | else 29 | return 0; 30 | } 31 | 32 | void push(char c) 33 | { 34 | if(isfull()) 35 | printf("\n Stack is Full "); 36 | else 37 | { 38 | s.top++; 39 | s.a[s.top]=c; 40 | } 41 | } 42 | 43 | char pop() 44 | { 45 | char ch; 46 | if(isempty()) 47 | printf("\n Stack is Empty "); 48 | else 49 | { 50 | ch=s.a[s.top]; 51 | s.top--; 52 | return ch; 53 | } 54 | } 55 | 56 | int pri(char x) 57 | { 58 | if(x=='(') 59 | return 0; 60 | if(x=='+'||x=='-') 61 | return 1; 62 | if(x=='/'||x=='*') 63 | return 2; 64 | if(x=='$'||x=='^') 65 | return 3; 66 | return 0; 67 | } 68 | 69 | int main() 70 | { 71 | char exp[50]; 72 | char *e,x; 73 | 74 | printf("\n Enter The Infix Expression :: "); 75 | scanf("%s",exp); 76 | e=exp; 77 | init(); 78 | while (*e != '\0') 79 | { 80 | if(isalnum(*e)) 81 | printf("%c",*e); 82 | else if(*e == '(') 83 | push(*e); 84 | else if (*e == ')') 85 | { 86 | while((x=pop()) != '(') 87 | printf("%c",x); 88 | } 89 | else 90 | { 91 | while(pri(s.a[s.top]) >= pri(*e)) 92 | printf("%c",pop()); 93 | push(*e); 94 | } 95 | e++; 96 | } 97 | while(!isempty()) 98 | printf("%c",pop()); 99 | } 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /linklist-menu3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include"/home/sahil/User_Header_File/linklist.h" 5 | 6 | int main() 7 | { 8 | struct node *head=NULL; 9 | int ch,num,pos; 10 | do{ 11 | printf("\n 1: CREATE \n 2: DISPLAY \n 3: INSERT BEGINING \n 4: INSERT END "); 12 | printf("\n 5: INSERT MIDDLE \n 6: INSERT COMMON \n 7: DELETE BEGINING \n 8: DELETE END"); 13 | printf("\n 9: DELETE MIDDLE \n 10: DELETE COMMON \n 11: SEARCHING"); 14 | printf("\n\n Enter Choice"); 15 | scanf("%d",&ch); 16 | 17 | switch (ch) 18 | { 19 | case 1 : head=create(head); 20 | break; 21 | case 2 : display(head); 22 | break; 23 | case 3 : printf("\n Enter Number To Insert :: "); 24 | scanf("%d",&num); 25 | head=insertbeg(head,num); 26 | break; 27 | case 4 : printf("\n Enter Number To Insert :: "); 28 | scanf("%d",&num); 29 | head=insertend(head,num); 30 | break; 31 | case 5 : printf("\n Enter Number to insert::"); 32 | scanf("%d",&num); 33 | printf("\n Enter Postion to insert :: "); 34 | scanf("%d",&pos); 35 | head=insertmid(head,num,pos); 36 | break; 37 | case 6 : printf("\n Enter Number to insert :: "); 38 | scanf("%d",&num); 39 | printf("\n Enter Position to insert :: "); 40 | scanf("%d",&pos); 41 | head=insertcom(head,num,pos); 42 | break; 43 | case 7 : head=delbeg(head); 44 | break; 45 | case 8 : head=delend(head); 46 | break; 47 | case 9 : printf("\n Enter Position to delete :: "); 48 | scanf("%d",&pos); 49 | head=delmid(head,pos); 50 | break; 51 | case 10 : printf("\n Enter Position to delete :: "); 52 | scanf("%d",&pos); 53 | head=delcom(head,pos); 54 | break; 55 | case 11 : printf("Enter Number to Search ::"); 56 | scanf("%d",&num); 57 | if(search(head,num)==NULL) 58 | printf("\n Record Not Found......"); 59 | else 60 | printf("Record Found....."); 61 | break; 62 | default: printf("\n Invalid Choice....."); 63 | break; 64 | } 65 | }while(ch<12); 66 | 67 | 68 | 69 | } 70 | 71 | -------------------------------------------------------------------------------- /linklist-menu.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | struct node* create(struct node *head) 12 | { 13 | int n,i; 14 | struct node *newnode,*temp; 15 | 16 | printf("\n Enter Limit :: "); 17 | scanf("%d",&n); 18 | 19 | for(i=-0;idata); 24 | 25 | newnode->next=NULL; 26 | 27 | if(head==NULL) 28 | { 29 | head=newnode; 30 | temp=newnode; 31 | } 32 | else 33 | { 34 | temp->next=newnode; 35 | temp=newnode; 36 | } 37 | } 38 | return head; 39 | } 40 | 41 | void display(struct node *head) 42 | { 43 | struct node *temp; 44 | 45 | for(temp=head;temp!=NULL;temp=temp->next) 46 | { 47 | printf("%d\t",temp->data); 48 | } 49 | } 50 | 51 | struct node * insertbeg(struct node *head,int num) 52 | { 53 | struct node *newnode; 54 | newnode=(struct node *)malloc(sizeof(struct node)); 55 | 56 | newnode->data=num; 57 | newnode->next=head; 58 | head=newnode; 59 | return head; 60 | } 61 | 62 | struct node * insertend(struct node *head,int num) 63 | { 64 | struct node *newnode,*temp; 65 | newnode=(struct node *)malloc(sizeof(struct node)); 66 | 67 | newnode->data=num; 68 | newnode->next=NULL; 69 | 70 | for(temp=head;temp->next!=NULL;temp=temp->next); 71 | 72 | temp->next=newnode; 73 | return head; 74 | 75 | } 76 | 77 | int main() 78 | { 79 | struct node *head=NULL; 80 | int ch,num; 81 | do{ 82 | printf("\n 1: CREATE \n 2: DISPLAY \n 3: INSERT BEGINING \n 4: INSERT END \n"); 83 | printf("\n Enter Choice"); 84 | scanf("%d",&ch); 85 | 86 | switch (ch) 87 | { 88 | case 1 : head=create(head); 89 | break; 90 | case 2 : display(head); 91 | break; 92 | case 3 : printf("\n Enter Number To Insert :: "); 93 | scanf("%d",&num); 94 | head=insertbeg(head,num); 95 | break; 96 | case 4 : printf("\n Enter Number To Insert :: "); 97 | scanf("%d",&num); 98 | head=insertend(head,num); 99 | default: printf("\n Invalid Choice....."); 100 | break; 101 | } 102 | }while(ch<5); 103 | 104 | 105 | 106 | } 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /prefix1.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #define max 50 5 | 6 | struct stack 7 | { 8 | char a[max]; 9 | int top; 10 | }s; 11 | 12 | void init() 13 | { 14 | s.top=-1; 15 | } 16 | 17 | int isempty() 18 | { 19 | if(s.top==-1) 20 | return 1; 21 | else 22 | return 0; 23 | } 24 | 25 | int isfull() 26 | { 27 | if(s.top==max-1) 28 | return 1; 29 | else 30 | return 0; 31 | } 32 | 33 | void push(char c) 34 | { 35 | if(isfull()) 36 | printf("\n Stack is Full "); 37 | else 38 | { 39 | s.top++; 40 | s.a[s.top]=c; 41 | } 42 | } 43 | 44 | char pop() 45 | { 46 | char ch; 47 | if(isempty()) 48 | printf("\n Stack is Empty "); 49 | else 50 | { 51 | ch=s.a[s.top]; 52 | s.top--; 53 | return ch; 54 | } 55 | } 56 | 57 | int pri(char x) 58 | { 59 | if(x=='(') 60 | return 0; 61 | if(x=='+'||x=='-') 62 | return 1; 63 | if(x=='/'||x=='*') 64 | return 2; 65 | if(x=='$'||x=='^') 66 | return 3; 67 | return 0; 68 | } 69 | 70 | void reverseString(char* str) 71 | { 72 | int len = strlen(str); 73 | int i, j; 74 | char temp; 75 | 76 | for (i = 0, j = len - 1; i < j; i++, j--) 77 | { 78 | temp = str[i]; 79 | str[i] = str[j]; 80 | str[j] = temp; 81 | } 82 | } 83 | 84 | 85 | int main() 86 | { 87 | char exp[50],prefix[50]; 88 | char exp1[50],x; 89 | int i,j=0; 90 | 91 | 92 | printf("\n Enter The Infix Expression :: "); 93 | scanf("%s",exp); 94 | reverseString(exp); 95 | 96 | for(i=0;exp[i]!='\0';i++) 97 | { 98 | if(exp[i]=='(') 99 | exp[i]=')'; 100 | else if(exp[i]==')') 101 | exp[i]='('; 102 | } 103 | 104 | init(); 105 | for(i=0;exp[i]!='\0';i++) 106 | { 107 | if(isalnum(exp[i])) 108 | prefix[j++]=exp[i]; 109 | else if(exp[i] == '(') 110 | push(exp[i]); 111 | else if (exp[i] == ')') 112 | { 113 | while((x=pop()) != '(') 114 | prefix[j++]=x; 115 | } 116 | else 117 | { 118 | while(pri(s.a[s.top]) >= pri(exp[i])) 119 | prefix[j++]=pop(); 120 | push(exp[i]); 121 | } 122 | 123 | } 124 | while(!isempty()) 125 | prefix[j++]=pop(); 126 | 127 | prefix[j]='\0'; 128 | reverseString(prefix); 129 | printf("\n prefix expression=%s",prefix); 130 | 131 | } 132 | -------------------------------------------------------------------------------- /LINK LIST/singlycircular.c: -------------------------------------------------------------------------------- 1 | #include 2 | # define MEMORY (NODE *)malloc(sizeof(NODE)); 3 | # include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | typedef struct node NODE; 12 | 13 | NODE *create(NODE *list) 14 | { 15 | NODE *newnode,*temp; 16 | int i,n; 17 | printf("\n Enter Limit :: "); 18 | scanf("%d",&n); 19 | 20 | for(i=0;idata); 25 | 26 | if (list==NULL) 27 | { 28 | list=temp=newnode; 29 | newnode->next=list; 30 | } 31 | else 32 | { 33 | temp->next=newnode; 34 | temp=newnode; 35 | newnode->next=list; 36 | } 37 | } 38 | return list; 39 | } 40 | 41 | void Display(NODE *list) 42 | { 43 | NODE *temp=list; 44 | 45 | do 46 | { 47 | printf("%d\t",temp->data); 48 | temp=temp->next; 49 | }while(temp!=list); 50 | } 51 | 52 | NODE *insertbeg(NODE *list,int num) 53 | { 54 | NODE *newnode,*temp; 55 | newnode=MEMORY; 56 | newnode->data=num; 57 | for(temp=list;temp->next!=list;temp=temp->next); 58 | newnode->next=list; 59 | list=newnode; 60 | temp->next=list; 61 | 62 | return list; 63 | } 64 | 65 | NODE *insertmid(NODE *list ,int num,int pos) 66 | { 67 | NODE *newnode,*temp; 68 | int i; 69 | newnode=MEMORY; 70 | newnode->data=num; 71 | for(i=1,temp=list;temp->next!=NULL && inext); 72 | newnode->next=temp->next; 73 | temp->next=newnode; 74 | return list; 75 | } 76 | 77 | NODE *insertend(NODE *list ,int num) 78 | { 79 | NODE *newnode,*temp; 80 | newnode=MEMORY; 81 | newnode->data=num; 82 | for(temp=list;temp->next!=list;temp=temp->next); 83 | newnode->next=list; 84 | temp->next=newnode; 85 | return list; 86 | } 87 | 88 | int main() 89 | { 90 | NODE *list=NULL; 91 | int ch,num,pos; 92 | do{ 93 | printf("\n 1 = Create \n 2 = display \n 3 = insertbeg \n 4 = intertmid \n 5 = insertend "); 94 | printf("\n Enter choice :: "); 95 | scanf("%d",&ch); 96 | 97 | switch (ch) 98 | { 99 | case 1 : list=create(list); 100 | break; 101 | case 2 : Display(list); 102 | break; 103 | case 3 : printf("\n Enter Number to Insert :: "); 104 | scanf("%d",&num); 105 | list=insertbeg(list,num); 106 | break; 107 | case 4 : printf("\n Enter Number to Insert :: "); 108 | scanf("%d",&num); 109 | printf("\n Enter Position to Insert :: "); 110 | scanf("%d",&pos); 111 | list=insertmid(list,num,pos); 112 | break; 113 | case 5 : printf("\n Enter Number to Insert :: "); 114 | scanf("%d",&num); 115 | list=insertend(list,num); 116 | break; 117 | default: printf("\n Invalid choice"); 118 | break; 119 | } 120 | }while(ch<6); 121 | } -------------------------------------------------------------------------------- /SY-BSC-CS-2023-Slips-Soultions/Slip-1/dublink.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | typedef struct node 4 | { 5 | int data; 6 | struct node *next,*prev; 7 | }node; 8 | 9 | struct node *create(struct node *list) 10 | { 11 | int i,n; 12 | struct node *newnode,*temp; 13 | printf("enter limit"); 14 | scanf("%d",&n); 15 | for(i=0;idata); 20 | newnode->next=NULL; 21 | if(list==NULL) 22 | { 23 | list=newnode; 24 | temp=newnode; 25 | } 26 | else 27 | { 28 | temp->next=newnode; 29 | newnode->prev=temp; 30 | temp=newnode; 31 | } 32 | } 33 | return list; 34 | } 35 | void disp(struct node *list) 36 | { 37 | struct node *temp; 38 | for(temp=list;temp!=NULL;temp=temp->next) 39 | { 40 | printf("%d\t",temp->data); 41 | } 42 | } 43 | 44 | struct node* insertbeg(struct node *list,int num) 45 | { 46 | struct node *newnode; 47 | newnode=(struct node*)malloc(sizeof(struct node)); 48 | newnode->data=num; 49 | newnode->next=list; 50 | list->prev=newnode; 51 | list=newnode; 52 | return list; 53 | } 54 | /* 55 | struct node* insertbeg(struct node *list, int num) 56 | { 57 | struct node *newnode; 58 | newnode = (struct node*)malloc(sizeof(struct node)); 59 | newnode->data = num; 60 | newnode->next = list; // Set the next pointer of the new node to the current list 61 | newnode->prev = NULL; // Since this is the new head, there is no previous node 62 | 63 | if (list != NULL) 64 | { 65 | list->prev = newnode; // Update the previous pointer of the old head node 66 | } 67 | 68 | list = newnode; // Update the list to point to the new head node 69 | return list; 70 | }*/ 71 | struct node* insertend(struct node* list,int num) 72 | { 73 | struct node *newnode,*temp; 74 | newnode=(struct node*)malloc(sizeof(struct node)); 75 | newnode->data=num; 76 | newnode->next=NULL; 77 | for(temp=list;temp->next!=NULL;temp=temp->next); 78 | temp->next=newnode; 79 | newnode->prev=temp; 80 | return list; 81 | } 82 | struct node* insertmid(struct node *list,int pos,int num) 83 | { 84 | struct node *newnode,*temp; 85 | int i; 86 | newnode=(struct node*)malloc(sizeof(struct node)); 87 | newnode->data=num; 88 | for(i=1,temp=list;i<(pos-1)&&temp->next!=NULL;i++,temp=temp->next); 89 | newnode->next=temp->next; 90 | temp->next->prev=newnode; 91 | temp->next=newnode; 92 | newnode->prev=temp; 93 | return list; 94 | } 95 | struct node* delbeg(struct node *list) 96 | { 97 | struct node *temp; 98 | temp=list; 99 | list=list->next; 100 | free(temp); 101 | return list; 102 | } 103 | struct node* delend(struct node *list) 104 | { 105 | struct node *temp,*temp1; 106 | for(temp=list;temp->next->next!=NULL;temp=temp->next); 107 | temp1=temp->next; 108 | temp->next=NULL; 109 | free(temp1); 110 | return list; 111 | } 112 | struct node* delmid(struct node *list,int pos) 113 | { 114 | struct node *temp,*temp1; 115 | int i; 116 | for(i=1,temp=list;i<(pos-1)&&temp->next!=NULL;i++,temp=temp->next); 117 | temp1=temp->next; 118 | temp->next=temp1->next; 119 | temp1->next->prev=temp; 120 | free(temp1); 121 | return list; 122 | } 123 | 124 | struct node *insert(struct node *list,int num,int pos) 125 | { 126 | struct node *temp,*newnode; 127 | int i; 128 | newnode=(struct node *)malloc(sizeof(struct node)); 129 | newnode->data=num; 130 | if(pos==1) 131 | { 132 | newnode->next=list; 133 | list->prev=newnode; 134 | list=newnode; 135 | } 136 | else 137 | { 138 | for(i=1,temp=list;inext,i++); 139 | newnode->next=temp->next; 140 | temp->next=newnode; 141 | newnode->prev=temp; 142 | 143 | } 144 | return list; 145 | 146 | } 147 | 148 | struct node *del(struct node *list,int pos) 149 | { 150 | int i; 151 | struct node *temp,*temp1; 152 | if(list == NULL) 153 | return list; 154 | if(pos==1) 155 | { 156 | temp=list; 157 | list=list->next; 158 | free(temp); 159 | 160 | 161 | } 162 | else 163 | { 164 | for(i=1,temp=list;i<(pos-1)&&temp->next!=NULL;temp=temp->next,i++); 165 | temp1=temp->next; 166 | temp->next=temp1->next; 167 | temp1->next->prev=temp; 168 | free(temp1); 169 | 170 | } 171 | return list; 172 | } 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | -------------------------------------------------------------------------------- /LINK LIST/linkedlist-sahil.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | # define memory (NODE *)malloc(sizeof(NODE)); 5 | 6 | typedef struct node 7 | { 8 | int data; 9 | struct node *next; 10 | }NODE; 11 | 12 | NODE *create(NODE *head) 13 | { 14 | int n,i; 15 | NODE *newnode,*temp; 16 | 17 | printf("\n Enter Limit :: "); 18 | scanf("%d",&n); 19 | 20 | for(i=0;idata); 25 | 26 | newnode->next=NULL; 27 | 28 | if(head==NULL) 29 | { 30 | head=newnode; 31 | temp=newnode; 32 | } 33 | else 34 | { 35 | temp->next=newnode; 36 | temp=newnode; 37 | } 38 | } 39 | return head; 40 | } 41 | 42 | void display(NODE *head) 43 | { 44 | NODE *temp; 45 | 46 | for(temp=head;temp!=NULL;temp=temp->next) 47 | { 48 | printf("%d\t",temp->data); 49 | } 50 | } 51 | 52 | NODE *insertbeg(NODE *head,int num) 53 | { 54 | NODE *newnode; 55 | newnode=memory; 56 | 57 | newnode->data=num; 58 | newnode->next=head; 59 | head=newnode; 60 | return head; 61 | } 62 | 63 | NODE *insertend(NODE *head,int num) 64 | { 65 | NODE *newnode,*temp; 66 | newnode=memory; 67 | 68 | newnode->data=num; 69 | newnode->next=NULL; 70 | 71 | for(temp=head;temp->next!=NULL;temp=temp->next); 72 | 73 | temp->next=newnode; 74 | return head; 75 | 76 | } 77 | 78 | NODE *insertmid(NODE *head,int num,int pos) 79 | { 80 | int i; 81 | NODE *newnode,*temp; 82 | newnode=memory; 83 | 84 | newnode->data=num; 85 | 86 | for(i=1,temp=head;i<=(pos)&&temp->next!=NULL;i++,temp=temp->next); 87 | 88 | newnode->next=temp->next; 89 | temp->next=newnode; 90 | return head; 91 | } 92 | 93 | NODE *insertcom(NODE *head,int num,int pos) 94 | { 95 | NODE *newnode,*temp; 96 | int i; 97 | 98 | newnode=memory; 99 | 100 | newnode->data=num; 101 | 102 | if(pos==1) 103 | { 104 | newnode->next=head; 105 | head=newnode; 106 | return head; 107 | } 108 | else 109 | { 110 | for(i=1,temp=head;i<(pos) && temp->next!=NULL;i++,temp=temp->next); 111 | 112 | newnode->next=temp->next; 113 | temp->next=newnode; 114 | return head; 115 | } 116 | } 117 | NODE *search(NODE *head,int num) 118 | { 119 | NODE *temp; 120 | 121 | for(temp=head;temp!=NULL;temp=temp->next) 122 | { 123 | if(temp->data==num) 124 | { 125 | return temp; 126 | } 127 | } 128 | return NULL; 129 | } 130 | 131 | int main() 132 | { 133 | NODE *head=NULL; 134 | int ch,num,pos; 135 | do{ 136 | printf("\n 1: CREATE \n 2: DISPLAY \n 3: INSERT BEGINING \n 4: INSERT END "); 137 | printf("\n 5: INSERT MIDDLE \n 6: INSERT pos\n 7: SEARCH"); 138 | 139 | printf("\n\n Enter Choice"); 140 | scanf("%d",&ch); 141 | 142 | switch (ch) 143 | { 144 | case 1 : head=create(head); 145 | break; 146 | case 2 : display(head); 147 | break; 148 | case 3 : printf("\n Enter Number To Insert :: "); 149 | scanf("%d",&num); 150 | head=insertbeg(head,num); 151 | break; 152 | case 4 : printf("\n Enter Number To Insert :: "); 153 | scanf("%d",&num); 154 | head=insertend(head,num); 155 | break; 156 | case 5 : printf("\n Enter Number to insert::"); 157 | scanf("%d",&num); 158 | printf("\n Enter Postion to insert :: "); 159 | scanf("%d",&pos); 160 | head=insertmid(head,num,pos); 161 | break; 162 | case 6 : printf("\n Enter Number to insert :: "); 163 | scanf("%d",&num); 164 | printf("\n Enter Position to insert :: "); 165 | scanf("%d",&pos); 166 | head=insertcom(head,num,pos); 167 | break; 168 | case 7 : printf("\n Enter Number To Search :: "); 169 | scanf("%d",&num); 170 | search(head,num); 171 | 172 | 173 | default: printf("\n Invalid Choice....."); 174 | break; 175 | } 176 | }while(ch<8); 177 | 178 | 179 | 180 | } 181 | -------------------------------------------------------------------------------- /linklist-menu2.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | struct node* create(struct node *head) 12 | { 13 | int n,i; 14 | struct node *newnode,*temp; 15 | 16 | printf("\n Enter Limit :: "); 17 | scanf("%d",&n); 18 | 19 | for(i=-0;idata); 24 | 25 | newnode->next=NULL; 26 | 27 | if(head==NULL) 28 | { 29 | head=newnode; 30 | temp=newnode; 31 | } 32 | else 33 | { 34 | temp->next=newnode; 35 | temp=newnode; 36 | } 37 | } 38 | return head; 39 | } 40 | 41 | void display(struct node *head) 42 | { 43 | struct node *temp; 44 | 45 | for(temp=head;temp!=NULL;temp=temp->next) 46 | { 47 | printf("%d\t",temp->data); 48 | } 49 | } 50 | 51 | struct node * insertbeg(struct node *head,int num) 52 | { 53 | struct node *newnode; 54 | newnode=(struct node *)malloc(sizeof(struct node)); 55 | 56 | newnode->data=num; 57 | newnode->next=head; 58 | head=newnode; 59 | return head; 60 | } 61 | 62 | struct node * insertend(struct node *head,int num) 63 | { 64 | struct node *newnode,*temp; 65 | newnode=(struct node *)malloc(sizeof(struct node)); 66 | 67 | newnode->data=num; 68 | newnode->next=NULL; 69 | 70 | for(temp=head;temp->next!=NULL;temp=temp->next); 71 | 72 | temp->next=newnode; 73 | return head; 74 | 75 | } 76 | 77 | struct node* insertmid(struct node *head,int num,int pos) 78 | { 79 | int i; 80 | struct node *newnode,*temp; 81 | newnode=(struct node *)malloc(sizeof(struct node)); 82 | 83 | newnode->data=num; 84 | 85 | for(i=1,temp=head;i<=(pos)&&temp->next!=NULL;i++,temp=temp->next); 86 | 87 | newnode->next=temp->next; 88 | temp->next=newnode; 89 | return head; 90 | } 91 | 92 | struct node * insertcom(struct node *head,int num,int pos) 93 | { 94 | struct node *newnode,*temp; 95 | int i; 96 | 97 | newnode=(struct node *)malloc(sizeof(struct node)); 98 | 99 | newnode->data=num; 100 | 101 | if(pos==1) 102 | { 103 | newnode->next=head; 104 | head=newnode; 105 | return head; 106 | } 107 | else 108 | { 109 | for(i=1,temp=head;i<(pos) && temp->next!=NULL;i++,temp=temp->next); 110 | 111 | newnode->next=temp->next; 112 | temp->next=newnode; 113 | return head; 114 | } 115 | } 116 | 117 | struct node* delbeg(struct node *head) 118 | { 119 | struct node *temp; 120 | 121 | temp=head; 122 | head=head->next; 123 | free(temp); 124 | return head; 125 | } 126 | 127 | struct node* delend(struct node * head) 128 | { 129 | struct node *temp,*temp1; 130 | 131 | for(temp=head;temp->next->next!=NULL;temp=temp->next); 132 | 133 | temp1=temp->next; 134 | temp->next=NULL; 135 | free(temp1); 136 | return head; 137 | } 138 | 139 | struct node* delmid(struct node * head,int pos) 140 | { 141 | struct node *temp,*temp1; 142 | int i; 143 | 144 | for(i=1,temp=head;i<(pos-1)&& temp->next!=NULL;i++,temp=temp->next); 145 | 146 | temp1=temp->next; 147 | temp->next=temp1->next; 148 | free(temp1); 149 | return head; 150 | } 151 | 152 | struct node* delcom(struct node *head,int pos) 153 | { 154 | struct node *temp,*temp1; 155 | int i; 156 | 157 | if(pos==1) 158 | { 159 | temp=head; 160 | head=head->next; 161 | free(temp); 162 | } 163 | else 164 | { 165 | for(i=1,temp=head;i<(pos-1)&& temp->next!=NULL;i++,temp=temp->next); 166 | 167 | temp1=temp->next; 168 | temp->next=temp1->next; 169 | free(temp1); 170 | } 171 | return head; 172 | } 173 | 174 | struct node * search(struct node *head,int num) 175 | { 176 | struct node *temp; 177 | 178 | for(temp=head;temp!=NULL;temp=temp->next) 179 | { 180 | if(temp->data==num) 181 | { 182 | return temp; 183 | } 184 | } 185 | return NULL; 186 | } 187 | 188 | int main() 189 | { 190 | struct node *head=NULL; 191 | int ch,num,pos; 192 | do{ 193 | printf("\n 1: CREATE \n 2: DISPLAY \n 3: INSERT BEGINING \n 4: INSERT END "); 194 | printf("\n 5: INSERT MIDDLE \n 6: INSERT COMMON \n 7: DELETE BEGINING \n 8: DELETE END"); 195 | printf("\n 9: DELETE MIDDLE \n 10: DELETE COMMON \n 11: SEARCHING"); 196 | printf("\n\n Enter Choice"); 197 | scanf("%d",&ch); 198 | 199 | switch (ch) 200 | { 201 | case 1 : head=create(head); 202 | break; 203 | case 2 : display(head); 204 | break; 205 | case 3 : printf("\n Enter Number To Insert :: "); 206 | scanf("%d",&num); 207 | head=insertbeg(head,num); 208 | break; 209 | case 4 : printf("\n Enter Number To Insert :: "); 210 | scanf("%d",&num); 211 | head=insertend(head,num); 212 | break; 213 | case 5 : printf("\n Enter Number to insert::"); 214 | scanf("%d",&num); 215 | printf("\n Enter Postion to insert :: "); 216 | scanf("%d",&pos); 217 | head=insertmid(head,num,pos); 218 | break; 219 | case 6 : printf("\n Enter Number to insert :: "); 220 | scanf("%d",&num); 221 | printf("\n Enter Position to insert :: "); 222 | scanf("%d",&pos); 223 | head=insertcom(head,num,pos); 224 | break; 225 | case 7 : head=delbeg(head); 226 | break; 227 | case 8 : head=delend(head); 228 | break; 229 | case 9 : printf("\n Enter Position to delete :: "); 230 | scanf("%d",&pos); 231 | head=delmid(head,pos); 232 | break; 233 | case 10 : printf("\n Enter Position to delete :: "); 234 | scanf("%d",&pos); 235 | head=delcom(head,pos); 236 | break; 237 | case 11 : printf("Enter Number to Search ::"); 238 | scanf("%d",&num); 239 | if(search(head,num)==NULL) 240 | printf("\n Record Not Found......"); 241 | else 242 | printf("Record Found....."); 243 | break; 244 | default: printf("\n Invalid Choice....."); 245 | break; 246 | } 247 | }while(ch<12); 248 | 249 | 250 | 251 | } 252 | 253 | -------------------------------------------------------------------------------- /LINK LIST/linkmenu.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | struct node 6 | { 7 | int data; 8 | struct node *next; 9 | }; 10 | 11 | struct node* create(struct node *head) 12 | { 13 | int n,i; 14 | struct node *newnode,*temp; 15 | 16 | printf("\n Enter Limit :: "); 17 | scanf("%d",&n); 18 | 19 | for(i=-0;idata); 24 | 25 | newnode->next=NULL; 26 | 27 | if(head==NULL) 28 | { 29 | head=newnode; 30 | temp=newnode; 31 | } 32 | else 33 | { 34 | temp->next=newnode; 35 | temp=newnode; 36 | } 37 | } 38 | return head; 39 | } 40 | 41 | void display(struct node *head) 42 | { 43 | struct node *temp; 44 | 45 | for(temp=head;temp!=NULL;temp=temp->next) 46 | { 47 | printf("%d\t",temp->data); 48 | } 49 | } 50 | 51 | struct node * insertbeg(struct node *head,int num) 52 | { 53 | struct node *newnode; 54 | newnode=(struct node *)malloc(sizeof(struct node)); 55 | 56 | newnode->data=num; 57 | newnode->next=head; 58 | head=newnode; 59 | return head; 60 | } 61 | 62 | struct node * insertend(struct node *head,int num) 63 | { 64 | struct node *newnode,*temp; 65 | newnode=(struct node *)malloc(sizeof(struct node)); 66 | 67 | newnode->data=num; 68 | newnode->next=NULL; 69 | 70 | for(temp=head;temp->next!=NULL;temp=temp->next); 71 | 72 | temp->next=newnode; 73 | return head; 74 | 75 | } 76 | 77 | struct node* insertmid(struct node *head,int num,int pos) 78 | { 79 | int i; 80 | struct node *newnode,*temp; 81 | newnode=(struct node *)malloc(sizeof(struct node)); 82 | 83 | newnode->data=num; 84 | 85 | for(i=1,temp=head;i<=(pos)&&temp->next!=NULL;i++,temp=temp->next); 86 | 87 | newnode->next=temp->next; 88 | temp->next=newnode; 89 | return head; 90 | } 91 | 92 | struct node * insertcom(struct node *head,int num,int pos) 93 | { 94 | struct node *newnode,*temp; 95 | int i; 96 | 97 | newnode=(struct node *)malloc(sizeof(struct node)); 98 | 99 | newnode->data=num; 100 | 101 | if(pos==1) 102 | { 103 | newnode->next=head; 104 | head=newnode; 105 | return head; 106 | } 107 | else 108 | { 109 | for(i=1,temp=head;i<(pos) && temp->next!=NULL;i++,temp=temp->next); 110 | 111 | newnode->next=temp->next; 112 | temp->next=newnode; 113 | return head; 114 | } 115 | } 116 | 117 | struct node* delbeg(struct node *head) 118 | { 119 | struct node *temp; 120 | 121 | temp=head; 122 | head=head->next; 123 | free(temp); 124 | return head; 125 | } 126 | 127 | struct node* delend(struct node * head) 128 | { 129 | struct node *temp,*temp1; 130 | 131 | for(temp=head;temp->next->next!=NULL;temp=temp->next); 132 | 133 | temp1=temp->next; 134 | temp->next=NULL; 135 | free(temp1); 136 | return head; 137 | } 138 | 139 | struct node* delmid(struct node * head,int pos) 140 | { 141 | struct node *temp,*temp1; 142 | int i; 143 | 144 | for(i=1,temp=head;i<(pos-1)&& temp->next!=NULL;i++,temp=temp->next); 145 | 146 | temp1=temp->next; 147 | temp->next=temp1->next; 148 | free(temp1); 149 | return head; 150 | } 151 | 152 | struct node* delcom(struct node *head,int pos) 153 | { 154 | struct node *temp,*temp1; 155 | int i; 156 | 157 | if(pos==1) 158 | { 159 | temp=head; 160 | head=head->next; 161 | free(temp); 162 | } 163 | else 164 | { 165 | for(i=1,temp=head;i<(pos-1)&& temp->next!=NULL;i++,temp=temp->next); 166 | 167 | temp1=temp->next; 168 | temp->next=temp1->next; 169 | free(temp1); 170 | } 171 | return head; 172 | } 173 | 174 | struct node * search(struct node *head,int num) 175 | { 176 | struct node *temp; 177 | 178 | for(temp=head;temp!=NULL;temp=temp->next) 179 | { 180 | if(temp->data==num) 181 | { 182 | return temp; 183 | } 184 | } 185 | return NULL; 186 | } 187 | 188 | int main() 189 | { 190 | struct node *head=NULL; 191 | int ch,num,pos; 192 | do{ 193 | printf("\n 1: CREATE \n 2: DISPLAY \n 3: INSERT BEGINING \n 4: INSERT END "); 194 | printf("\n 5: INSERT MIDDLE \n 6: INSERT COMMON \n 7: DELETE BEGINING \n 8: DELETE END"); 195 | printf("\n 9: DELETE MIDDLE \n 10: DELETE COMMON \n 11: SEARCHING"); 196 | printf("\n\n Enter Choice"); 197 | scanf("%d",&ch); 198 | 199 | switch (ch) 200 | { 201 | case 1 : head=create(head); 202 | break; 203 | case 2 : display(head); 204 | break; 205 | case 3 : printf("\n Enter Number To Insert :: "); 206 | scanf("%d",&num); 207 | head=insertbeg(head,num); 208 | break; 209 | case 4 : printf("\n Enter Number To Insert :: "); 210 | scanf("%d",&num); 211 | head=insertend(head,num); 212 | break; 213 | case 5 : printf("\n Enter Number to insert::"); 214 | scanf("%d",&num); 215 | printf("\n Enter Postion to insert :: "); 216 | scanf("%d",&pos); 217 | head=insertmid(head,num,pos); 218 | break; 219 | case 6 : printf("\n Enter Number to insert :: "); 220 | scanf("%d",&num); 221 | printf("\n Enter Position to insert :: "); 222 | scanf("%d",&pos); 223 | head=insertcom(head,num,pos); 224 | break; 225 | case 7 : head=delbeg(head); 226 | break; 227 | case 8 : head=delend(head); 228 | break; 229 | case 9 : printf("\n Enter Position to delete :: "); 230 | scanf("%d",&pos); 231 | head=delmid(head,pos); 232 | break; 233 | case 10 : printf("\n Enter Position to delete :: "); 234 | scanf("%d",&pos); 235 | head=delcom(head,pos); 236 | break; 237 | case 11 : printf("Enter Number to Search ::"); 238 | scanf("%d",&num); 239 | if(search(head,num)==NULL) 240 | printf("\n Record Not Found......"); 241 | else 242 | printf("Record Found....."); 243 | break; 244 | default: printf("\n Invalid Choice....."); 245 | break; 246 | } 247 | }while(ch<12); 248 | 249 | 250 | 251 | } --------------------------------------------------------------------------------