Advertisement
sahnaj

Doubly Link List

Oct 15th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.72 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct node
  4. {
  5. int a;
  6. char s[20];
  7. struct node *next;
  8. struct node *prev;
  9. } node;
  10. node *head=NULL,*tail=NULL;
  11. void displaylst() //Display last To First.
  12. {
  13. int ch;
  14. node *list=tail;
  15. if(head==NULL)
  16. {
  17. printf("NO Data Available!!\n\n ");
  18. }
  19. else
  20. {
  21. while(list!=NULL)
  22. {
  23. printf("\nName: %s\n",list->s);
  24. printf("Age: %d\n\n",list->a);
  25. list=list->prev;
  26. }
  27. }
  28. printf(" 1.Menu\n");
  29. printf(" 2.Exit\n");
  30. printf("Press Any Option:");
  31. scanf("%d",&ch);
  32. switch(ch)
  33. {
  34. case 1:
  35. {
  36. menu();
  37. }
  38. case 2:
  39. {
  40. exit(0);
  41. }
  42.  
  43. default:
  44. {
  45.  
  46. printf("You Choose Wrong Option!!\a\n\n");
  47. menu();
  48. break;
  49. }
  50.  
  51. }
  52. }
  53.  
  54. void displayfrst() //Display First To Last.
  55. {
  56. int ch;
  57. node *list=head;
  58. if(head==NULL)
  59. {
  60. printf(" NO Data Available!!\n\n ");
  61. }
  62. else
  63. {
  64. while(list!=NULL)
  65. {
  66. printf("\nName: %s\n",list->s);
  67.  
  68. printf("Age: %d\n\n",list->a);
  69. list=list->next;
  70. }
  71. }
  72. printf(" 1.Menu\n");
  73. printf(" 2.Exit\n");
  74. printf("Press Any Option:");
  75. scanf("%d",&ch);
  76. switch(ch)
  77. {
  78. case 1:
  79. {
  80. menu();
  81. }
  82. case 2:
  83. {
  84. exit(0);
  85. }
  86.  
  87. default:
  88. {
  89.  
  90. printf("You Choose Wrong Option!!\a\n\n");
  91. menu();
  92. break;
  93. }
  94.  
  95. }
  96. }
  97.  
  98. void display() //Choose Display Type.
  99. {
  100. int ch,n;
  101. printf(" 1.Display 1st To Last\n");
  102. printf(" 2.Display Last To 1st\n");
  103. printf("Choose Any Option:");
  104. scanf("%d",&n);
  105. switch(n)
  106. {
  107. case 1:
  108. {
  109. displayfrst();
  110. break;
  111. }
  112. case 2:
  113. {
  114. displaylst();
  115. break;
  116. }
  117. default:
  118. {
  119. printf("You Choose Wrong Option!!\a\n\n");
  120. menu();
  121. break;
  122. }
  123. }
  124. }
  125. void searchpos() //Search By Position.
  126. {
  127. int ch,n;
  128. node *list=head;
  129. printf("Enter Your Position:");
  130. scanf("%d",&n);
  131. if(n==1)
  132. {
  133. printf("Name: %s\n",list->s);
  134. printf("Age: %d\n\n",list->a);
  135. }
  136. else
  137. {
  138. n=n-2;
  139. while(n!=0&&list->next!=NULL)
  140. {
  141. list=list->next;
  142. n--;
  143. }
  144. if(list->next==NULL)
  145. {
  146. printf("No Information Available!!\n\n");
  147. }
  148. else
  149. {
  150. printf("Name: %s\n",list->next->s);
  151. printf("Age: %d\n\n",list->next->a);
  152. }
  153. }
  154. printf(" 1.Menu\n");
  155. printf(" 2.Exit\n");
  156. printf("Press Any Option:");
  157. scanf("%d",&ch);
  158. switch(ch)
  159. {
  160. case 1:
  161. {
  162. menu();
  163. }
  164. case 2:
  165. {
  166. exit(0);
  167. }
  168.  
  169. default:
  170. {
  171.  
  172. printf("You Choose Wrong Option!!\a\n\n");
  173. menu();
  174. break;
  175. }
  176.  
  177. }
  178. }
  179.  
  180. void searchval() //Search By Value.
  181. {
  182. node *list=head;
  183. int ch,v;
  184. printf("Enter Your Age:");
  185. scanf("%d",&v);
  186. if(list->a==v)
  187. {
  188. printf("Name: %s\n",list->s);
  189. printf("Age: %d\n\n",list->a);
  190. }
  191. else
  192. {
  193. while(list->a!=v)
  194. {
  195. list=list->next;
  196. if(list==NULL)
  197. {
  198. break;
  199. }
  200. }
  201. if(list==NULL)
  202. {
  203. printf(" No Information Available!!\n\n");
  204. }
  205. else
  206. {
  207. printf("Name: %s\n",list->next->s);
  208. printf("Age: %d\n\n",list->next->a);
  209. }
  210. }
  211. printf(" 1.Menu\n");
  212. printf(" 2.Exit\n");
  213. printf("Press Any Option:");
  214. scanf("%d",&ch);
  215. switch(ch)
  216. {
  217. case 1:
  218. {
  219. menu();
  220. }
  221. case 2:
  222. {
  223. exit(0);
  224. }
  225.  
  226. default:
  227. {
  228.  
  229. printf("You Choose Wrong Option!!\a\n\n");
  230. menu();
  231. break;
  232. }
  233.  
  234. }
  235. }
  236.  
  237. void search() //Choose Search Type.
  238. {
  239. int ch;
  240. printf(" 1.Search By Value\n");
  241. printf(" 2.Search By Position\n");
  242. printf("Choose Any Option:");
  243. scanf("%d",&ch);
  244. switch(ch)
  245. {
  246. case 1:
  247. {
  248. searchval();
  249. break;
  250. }
  251. case 2:
  252. {
  253. searchpos();
  254. break;
  255. }
  256. default :
  257. {
  258. printf("You Choose Wrong Option!!\n");
  259. menu();
  260. break;
  261.  
  262. }
  263. }
  264. }
  265.  
  266. void deletepos() //Delete By Position.
  267. {
  268. int n,ch;
  269. node *list=head,*temp;
  270. printf("please enter position:");
  271. scanf("%d",&n);
  272. if(head==NULL)
  273. {
  274. printf("NO DATA FOR DELETE\n");
  275. }
  276. else if(n==1)
  277. {
  278. if(head->next==NULL)
  279. {
  280. head=NULL;
  281. printf(" Data Deleted!!\n\n");
  282. }
  283. else
  284. {
  285. head=list->next;
  286. head->prev=NULL;
  287. free(list);
  288. }
  289.  
  290. }
  291. else
  292. {
  293.  
  294. n=n-2;
  295. while(n!=0&&list->next!=NULL)
  296. {
  297. list=list->next;
  298. n--;
  299. }
  300.  
  301. if(list->next==NULL)
  302. {
  303. printf(" You Choose Wrong Position!!\a\n\n");
  304. }
  305. else if(list->next->next==NULL&&n==0)
  306. {
  307. temp=tail;
  308. tail=tail->prev;
  309. tail->next=NULL;
  310. free(temp);
  311. printf(" Block No: %d is Deleted!!\n\n",n);
  312. }
  313. else
  314. {
  315. temp=list->next;
  316. temp->next->prev=list;
  317. list->next=temp->next;
  318. free(temp);
  319. printf(" Block No: %d is Deleted!!\n\n",n);
  320. }
  321. }
  322. printf(" 1.Menu\n");
  323. printf(" 2.Exit\n");
  324. printf("Press Any Option:");
  325. scanf("%d",&ch);
  326. switch(ch)
  327. {
  328. case 1:
  329. {
  330. menu();
  331. }
  332. case 2:
  333. {
  334. exit(0);
  335. }
  336.  
  337. default:
  338. {
  339.  
  340. printf("You Choose Wrong Option!!\a\n\n");
  341. menu();
  342. break;
  343. }
  344.  
  345. }
  346.  
  347. }
  348.  
  349. void deleteval() //Delete By Value.
  350. {
  351. int n,ch;
  352. node *list=head,*temp=NULL;
  353. printf("please enter age:");
  354. scanf("%d",&n);
  355. if(head==NULL)
  356. {
  357. printf("No Information Available!!\n\n");
  358. }
  359. else if(list->a==n)
  360. {
  361. if(list->next==NULL)
  362. {
  363. head=NULL;
  364. tail=NULL;
  365. printf(" Data Deleted!!\n\n");
  366. free(list);
  367. }
  368. else
  369. {
  370. temp=list;
  371. list=list->next;
  372. list->prev=NULL;
  373. head=list;
  374. free(temp);
  375. printf(" Data Deleted!!\n\n");
  376. }
  377.  
  378. }
  379. else
  380. {
  381. while(list->a!=n)
  382. {
  383. list=list->next;
  384. if(list==NULL)
  385. {
  386. break;
  387. }
  388. }
  389.  
  390. if(list == NULL)
  391. {
  392.  
  393.  
  394. printf(" No Value Available\n\n");
  395. }
  396.  
  397. else if(list->a==n&&list->next==NULL)
  398. {
  399. list=tail;
  400. temp=list;
  401. list->prev->next=temp->next;
  402. tail=list->prev;
  403. free(temp);
  404. printf(" Data Deleted!!\n\n");
  405. }
  406.  
  407.  
  408.  
  409.  
  410.  
  411. else
  412. {
  413. temp=list;
  414. list->prev->next=temp->next;
  415. temp->next->prev=list->prev;
  416. free(temp);
  417. printf(" Data Deleted!!\n\n");
  418. }
  419. }
  420.  
  421. printf(" 1.Menu\n");
  422. printf(" 2.Exit\n");
  423. printf("Press Any Option:");
  424. scanf("%d",&ch);
  425. switch(ch)
  426. {
  427. case 1:
  428. {
  429. menu();
  430. }
  431. case 2:
  432. {
  433. exit(0);
  434. }
  435.  
  436. default:
  437. {
  438.  
  439. printf("You Choose Wrong Option!!\a\n\n");
  440. menu();
  441. break;
  442. }
  443.  
  444. }
  445.  
  446. }
  447.  
  448. void Delete() //Choose Deleting Type.
  449. {
  450. int ch,n;
  451. printf(" 1.Delete By Value\n");
  452. printf(" 2.Delete By Position\n");
  453. printf("Choose Any Option:");
  454. scanf("%d",&ch);
  455. switch(ch)
  456. {
  457. case 1:
  458. {
  459. deleteval();
  460. break;
  461. }
  462. case 2:
  463. {
  464. deletepos();
  465. break;
  466. }
  467. default:
  468. {
  469. printf("You Choose Wrong Option!!\a\n\n");
  470. menu();
  471. break;
  472. }
  473. }
  474.  
  475. }
  476.  
  477. void addpos() //Add By Position.
  478. {
  479. int p,ch;
  480. node *list=head;
  481. node *n=(node*)malloc(sizeof(node));
  482. n->prev=NULL;
  483. n->next=NULL;
  484. printf("\nName:");
  485. scanf(" %s[^\n]",n->s);
  486. printf("Age:");
  487. scanf("%d",&n->a);
  488. printf("Enter Your Position:");
  489. scanf("%d",&p);
  490. if(p==1)
  491. {
  492. if(head==NULL)
  493. {
  494. head=n;
  495. tail=n;
  496. }
  497. else
  498. {
  499. head->prev=n;
  500. n->next=head;
  501. head=n;
  502. }
  503.  
  504. }
  505. else
  506. {
  507. p=p-2;
  508. while(p!=0&&list->next!=NULL)
  509. {
  510. list=list->next;
  511. p--;
  512. }
  513. if(list->next==NULL)
  514. {
  515. tail->next=n;
  516. n->prev=tail;
  517. tail=n;
  518. }
  519. else
  520. {
  521. n->next=list->next;
  522. list->next->prev=n;
  523. n->prev=list;
  524.  
  525. list->next=n;
  526. }
  527. }
  528. printf(" 1.Menu\n");
  529. printf(" 2.Exit\n");
  530. printf("Press any Option:");
  531. scanf("%d",&ch);
  532. switch(ch)
  533. {
  534. case 1:
  535. {
  536. menu();
  537. }
  538. case 2:
  539. {
  540. exit(0);
  541. }
  542.  
  543. default:
  544. {
  545.  
  546. printf("You Choose Wrong Option!!\a\n\n");
  547. menu();
  548. break;
  549. }
  550. }
  551.  
  552. }
  553.  
  554.  
  555. void addlast() //Add At Last.
  556. {
  557. int ch;
  558. node *n=(node*)malloc(sizeof(node));
  559. n->prev=NULL;
  560. n->next=NULL;
  561. printf("\nName:");
  562. scanf(" %s[^\n]",n->s);
  563. printf("Age:");
  564. scanf("%d",&n->a);
  565.  
  566. if(head==NULL&&tail==NULL)
  567. {
  568. head=n;
  569. tail=n;
  570. }
  571. else
  572. {
  573. tail->next=n;
  574. n->prev=tail;
  575. tail=n;
  576. }
  577. printf(" 1.Menu\n");
  578. printf(" 2.Exit\n");
  579. printf("Press any Option:");
  580. scanf("%d",&ch);
  581. switch(ch)
  582. {
  583. case 1:
  584. {
  585. menu();
  586. }
  587. case 2:
  588. {
  589. exit(0);
  590. }
  591.  
  592. default:
  593. {
  594.  
  595. printf("You Choose Wrong Option!!\a\n\n");
  596. menu();
  597. break;
  598. }
  599. }
  600. }
  601.  
  602.  
  603. void addfirst() //Add At First.
  604. {
  605. int ch;
  606. node *n=(node*)malloc(sizeof(node));
  607. n->prev=NULL;
  608. n->next=NULL;
  609. printf("\nName:");
  610. scanf(" %s[^\n]",n->s);
  611. printf("Age:");
  612. scanf("%d",&n->a);
  613.  
  614. if(head==NULL&&tail==NULL)
  615. {
  616. head=n;
  617. tail=n;
  618. }
  619. else
  620. {
  621. head->prev=n;
  622. n->next=head;
  623. head=n;
  624. }
  625.  
  626. printf(" 1.Menu\n");
  627. printf(" 2.Exit\n");
  628. printf("Press any Option:");
  629. scanf("%d",&ch);
  630. switch(ch)
  631. {
  632. case 1:
  633. {
  634. menu();
  635. }
  636. case 2:
  637. {
  638. exit(0);
  639. }
  640.  
  641. default:
  642. {
  643.  
  644. printf("You Choose Wrong Option!!\a\n\n");
  645. menu();
  646. break;
  647. }
  648. }
  649. }
  650. void add() //Choose Add Type.
  651. {
  652. int ch;
  653. printf(" 1.Add At First\n");
  654. printf(" 2.Add At Last\n");
  655. printf(" 3.Add By position\n");
  656. printf("Choose any Option:");
  657. scanf("%d",&ch);
  658. switch(ch)
  659. {
  660. case 1:
  661. {
  662. addfirst();
  663. break;
  664. }
  665. case 2:
  666. {
  667. addlast();
  668. break;
  669. }
  670. case 3:
  671. {
  672. addpos();
  673. break;
  674. }
  675. default:
  676. {
  677. printf("You Choose Wrong Option!!\a\n\n");
  678. menu();
  679. break;
  680. }
  681. }
  682. }
  683. void menu() //Menu bar.
  684. {
  685. int n;
  686.  
  687. printf("\n\n");
  688. printf(" 1.Add");
  689. printf(" 2.Search\n");
  690. printf(" 3.Delete\n");
  691. printf(" 4.Display");
  692. printf(" 5.Exit\n");
  693. printf("Choose any Option:");
  694. scanf("%d",&n);
  695. switch(n)
  696. {
  697. case 1:
  698. {
  699. add();
  700. break;
  701. }
  702. case 2:
  703. {
  704. search();
  705. break;
  706. }
  707. case 3:
  708. {
  709. Delete();
  710. break;
  711. }
  712. case 4:
  713. {
  714. display();
  715. break;
  716. }
  717. case 5:
  718. {
  719. exit(0);
  720. break;
  721. }
  722. default:
  723. {
  724. printf("You Choose Wrong Option!!\a\n\n");
  725. menu();
  726. break;
  727. }
  728. }
  729. }
  730.  
  731. int main()
  732. {
  733.  
  734. menu();
  735. return 0;
  736. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement