Untitled
plain_text
a month ago
1.9 kB
4
Indexable
Never
#include <iostream> using namespace std; int cnt; int slPhantu; struct Node { int data; Node* prev; Node* next; }node[30000]; struct LinkedList { Node head; Node tail; }ll; void connect( Node* a , Node* b){ a->next = b; b->prev = a; } void init(){ cnt = 0; slPhantu = 0; connect(&ll.head,&ll.tail); } void add(int K){ node[cnt].data = K; connect(&node[cnt],ll.head.next); connect(&ll.head,&node[cnt]); cnt++; slPhantu++; } void addd(int K){ // add dit node[cnt].data = K; connect(ll.tail.prev,&node[cnt]); connect(&node[cnt],&ll.tail); cnt++; slPhantu++; } void print(){ Node * p = ll.head.next; while ( p != &ll.tail){ cout << p ->data << " "; p = p->next; } cout << endl; } //void insert(int index, int K){ // node[cnt].data = K; // // connect(node[index].prev,&node[cnt]); // connect(&node[cnt],&node[index]); //} void insert(int idx , int K){ if( idx >= slPhantu ){ addd(K); return; } Node * p = ll.head.next; int i = 0; while (p != &ll.tail) { if( i == idx){ node[cnt].data = K; connect(p->prev, &node[cnt]); connect(&node[cnt],p); slPhantu++; cnt++; return; } p = p ->next ; i++; } } void Del_index(int idx ){ if( idx >= slPhantu) return; Node * p = ll.head.next; int i = 0; while (p != &ll.tail) { if( i == idx){ connect(p->prev,p->next); slPhantu--; } p = p-> next; i++; } } void del_First(){ if(ll.head.next == &ll.tail) return; Node * tem = ll.head.next; connect(tem->prev,tem->next); slPhantu--; } int main(){ init (); add(1); print (); add(2); print (); addd(2); addd(2); addd(2); print (); del_First(); print(); del_First(); print(); insert(2,7); print(); insert(4,7); print(); Del_index(2); print(); return 0; }