LOL, finally i fix it !!!! XD
Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct record
{
char name[30];
struct record *next;
};
void main()
{
int choice;
char ans;
struct record *insert(struct record *), *append(struct record *); //prototype\
void view(struct record *);
struct record *del(struct record *); //prototype
struct record *start;
start=(struct record *)malloc(sizeof(struct record));
start->next=NULL;
do
{
system("cls");
printf("\n\n 1. Insert");
printf("\n 2. Deletion");
printf("\n 3. View");
printf("\n 4. Append");
printf("\n 5. EXIT");
printf("\n\n Choice:");
scanf("%d",&choice);fflush(stdin);
switch(choice)
{
case 1:
start = insert(start);
break;
case 2:
del(start);
break;
case 3:
view(start);
break;
case 4:
start = append(start);
break;
case 5:
exit(0);
default:
printf("\n Invalid Choice ");
}
}while(choice!=99);
}
struct record *insert( struct record *start)
{
char name[30],name1[30],flag=' ';
struct record *temp,*curr, *prev;
curr=start;
printf("\n Enter name to insert :");
gets(name);fflush(stdin);
printf("\n Enter the name before which to insert:");
gets(name1);fflush(stdin);
while(curr != NULL && flag == ' ')
{
if(strcmp(curr->name,name1)== 0)
{
flag='*';
temp=(struct record *) malloc(sizeof(struct record));
strcpy(temp->name,name);
temp->next = curr;
curr = temp;
printf("\nInsertion done !");
getch();
return curr;
break;
}
else if(strcmp(curr->next->name,name1)== 0)
{ flag='*';
temp=(struct record *) malloc(sizeof(struct record));
prev = curr;
strcpy(temp->name,name);
temp->next = prev->next;
prev->next =temp;
getch();
printf("\n Insertion done !");
return start;
break;
}
else
curr=curr->next;
}
if(flag==' ')
printf("\n Record not found !");
getch();
}
struct record * del(struct record *start) // HAVEN FIX DELETE FUNCTION
{
char name;
struct record *curr;
printf("\n Enter the name to delete:");
gets(name);fflush(stdin);
curr=start;
if(strcmp(curr->name,name)==0)
{
if(start==NULL)
{
start=(struct record *) malloc(sizeof(struct record));
strcpy(start->name," ");
start->next=NULL;
}
printf("\n\n\t Deletion successful!");
}
while(curr)
{
if(strcmp(curr->next->name,name)==0)
{
curr->next=curr->next->next;
printf("\n Deletion successful !");
}
else
curr=curr->next;
}
return start;
}
view(struct record *start)
{
struct record *curr;
curr=start;
while(curr != NULL)
{
printf("\n %s \n ",curr->name);
curr=curr->next;
getch();
}
printf("\n\n\t No more records !");
}
struct record *append(struct record *start)
{
struct record *curr;
char name[30];
static int flag;
printf("\n Enter the name :");
gets(name);fflush(stdin);
if(flag==0 || strcmp(start->name," ")==0)
{
strcpy(start->name,name);
start->next=NULL;
flag =1 ;
getch();
}
else
{
curr=start;
while(curr != NULL)
{
if( curr->next == NULL)
{
curr->next=(struct record *) malloc(sizeof(struct record));
curr=curr->next;
strcpy(curr->name,name);
curr->next=NULL;
curr = curr->next ;
}
else
{curr = curr->next ; }
}
}
printf("\n\n\t Append successful!");
return start;
getch();
}
But i still got problem , refering to tabstop says, i also can use
Code:
void insert(struct record **)
Can teach me how to write? i am kind of confusing of two "**" in the same time @.@ ,