Ich machte ein Programm von singly linked list
in C++
so von struct
innerhalb der Klasse verwenden. Ich weiß, dass typedef
mit struct
verwendet wird, so dass danach die Erklärung keinen Gebrauch von struct
Schlüsselwort erfordern. Aber wenn ich den Code nicht verwenden typedef
wird erfolgreich kompiliert auch ohne Verwendung des struct
Schlüsselwort in Zukunft Erklärungen, aber wenn ich typedef
verwenden Sie es nicht kompiliert. Hier ist der Code:Seltsames Verhalten von typedef in struct
#include <iostream>
using namespace std;
struct node{
int data;
node* next;
}*head;
class single_list{
public:
struct node* create_node(int);
void insert_begin();
void insert_pos();
void insert_last();
void delete_pos();
void sort();
void display();
};
int main()
{
int choice,nodes,element,position,i;
single_list sl;
node* head = NULL;
while(1)
{
cout<<endl<<"List of operations"<<endl;
cout<<"1: Insert node at the beginning"<<endl;
cout<<"2: Insert node at a specific position"<<endl;
cout<<"3: Insert node at the last"<<endl;
cout<<"4: Delete a node at specific position"<<endl;
cout<<"5: Sorting the linked list"<<endl;
cout<<"6: Display the linked list"<<endl;
cout<<"Enter your choice"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"Inserting node at the beninning"<<endl;
sl.insert_begin();
cout<<endl;
break;
case 2:
cout<<"Inserting node at a specific position"<<endl;
sl.insert_pos();
cout<<endl;
break;
case 3:
cout<<"Inserting node at the last place"<<endl;
sl.insert_last();
cout<<endl;
break;
case 4:
cout<<"Deleting node at specific position"<<endl;
sl.delete_pos();
cout<<endl;
break;
case 5:
cout<<"Sorting the linked list"<<endl;
sl.sort();
cout<<endl;
break;
case 6:
cout<<"Displaying the linked list"<<endl;
sl.display();
cout<<endl;
break;
default:
cout<<"Wrong Choice"<<endl;
}
}
}
node *single_list::create_node(int data)
{
node* temp;
temp = new node;
temp->data = data;
temp->next = NULL;
return temp;
}
void single_list::insert_begin()
{
cout<<"Enter value to be inserted"<<endl;
int data;
cin>>data;
node* temp;
node* p;
temp = create_node(data);
if (head == NULL)
{
head = temp;
head->next = NULL;
}
else
{
p = head;
head = temp;
head->next = p;
}
}
void single_list::insert_pos()
{
cout<<"Enter the position at which you want to enter the number"<<endl;
int pos;
cin>>pos;
cout<<"Enter the data of the node"<<endl;
int data;
node* t;
t = head;
node* temp1;
temp1->data = data;
for(int i=1;i<pos;i++)
{
t = t->next;
}
if(pos == 1)
{
if(head == NULL)
{
head = temp1;
head->next = NULL;
}
else
{
temp1->next = t->next;
t->next = temp1;
}
}
else
{
cout<<"Position out of range"<<endl;
}
}
void single_list::insert_last()
{
cout<<"Enter the data of the number"<<endl;
int data;
cin>>data;
node* temp1;
temp1->data = data;
temp1->next = NULL;
node* t;
t = head;
while(t != NULL)
{
t = t->next;
}
t->next = temp1;
}
Wo verwenden Sie typedef? – niyasc