Untitled
unknown
plain_text
a year ago
2.0 kB
5
Indexable
#include<iostream> using namespace std; struct node{ int data; node* next; }; node pool[30005]; node* head; int poolCnt; node* getNode(int val){ node* newNode=&pool[poolCnt++]; newNode->data = val; newNode->next = 0; return newNode; } void init(){ poolCnt=0; head=0; } int len(){ int dem=0; node* temp=head; while(temp!=NULL){ dem++; temp=temp->next; } return dem; } void putToHead(int val){ node* newNode=getNode(val); newNode->next = head; head = newNode; } void removeHead(){ if(head==0) return; head=head->next; } void insertAt(int pos, int val){ node* insertNode=getNode(val); if(pos==0 || head==NULL) { putToHead(val); return; } node* temp=head; for(int i=0;i<=pos-2;i++){ if(temp->next==NULL){ temp->next=insertNode; return; } temp=temp->next; } insertNode->next=temp->next; temp->next = insertNode; } void deleteAt(int pos){ if(pos==0 || head==NULL) { removeHead(); return; } node* temp=head; for(int i=0;i<=pos-2;i++){ temp=temp->next; if(temp == NULL) return; } if(temp->next==NULL) return; temp->next = temp->next->next; } void print(int pos){ if(len()==0) cout << "empty "; node *temp; temp=head; int i=0; while(temp!=NULL && i<pos) { cout << temp->data << " " ; temp = temp->next; i++; } } int t,n,x,a,b; char cmd; int main(){ freopen("input.txt","r",stdin); cin >> t; for(int tc=1;tc<=t;tc++){ cin >> n; init(); cout << "#" << tc << " "; for(int i=0;i<n;i++){ cin >> cmd; switch(cmd){ case 'r': removeHead(); break; case 'f': cin >> x; putToHead(x); break; case 'i': cin >> a >> b; insertAt(a,b); break; case 'd': cin >> x; deleteAt(x); break; case 'p': cin >> x; print(x); break; }; } cout << endl; } return 0; }
Editor is loading...
Leave a Comment