前端之家收集整理的这篇文章主要介绍了
【数据结构】双链表的演示,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
双链表 实现增加、删除、修改功能
- #include <stdio.h>
- #include <stdlib.h>
-
- typedef struct Data
- {
- Data *prior; // 前驱指针
- Data *next; // 后继指针
- int elem; // 数据元素
- }DoubleLinked,*PDoubleLinked;
-
- void DisDoubleLinked(PDoubleLinked L);
- void InsertDoubleLinked(PDoubleLinked L,int index,int elem);
- void DeleteDoubleLinked(PDoubleLinked L,int index);
- void ModifyDoubleLinked(PDoubleLinked L,int elem);
-
- void main()
- {
- PDoubleLinked L,P,Q;
- int size = 0;
-
- /**先初始化在使用*/
- L = (PDoubleLinked)malloc(sizeof(DoubleLinked));
-
- // 两种策略
- // 一 用到的时候再申请
- // 二 先申请 一大段 不够的时候再申请
- P = L;
- L->prior = NULL;
-
- printf("请输入双链表的大小:");
- scanf("%d",&size);
-
- while (size-- != 0)
- {
- P->next = (PDoubleLinked)malloc(sizeof(DoubleLinked));
- Q = P;
- P = P->next;
- P->prior = Q;
- P->next = NULL;
- P->elem = size*2+1;
- }
- // 显示双链表
- DisDoubleLinked(L);
- // 增
- InsertDoubleLinked(L,2,23);
- printf("\n");
- DisDoubleLinked(L);
- printf("\n");
- // 删
- DeleteDoubleLinked(L,3);
- DisDoubleLinked(L);
- printf("\n");
- // 改
- ModifyDoubleLinked(L,3,521);
- DisDoubleLinked(L);
- printf("\n");
- }
-
-
- void DisDoubleLinked(PDoubleLinked L)
- {
- PDoubleLinked P = L->next;
-
- while (P != NULL)
- {
- printf("%d\t",P->elem);
- P = P->next;
- }
- }
-
- void InsertDoubleLinked(PDoubleLinked L,int elem)
- {
- PDoubleLinked P = L;
- PDoubleLinked T;
- PDoubleLinked Q = (PDoubleLinked)malloc(sizeof(DoubleLinked));
- Q->elem = elem;
-
- while (--index != 0)
- {
- P = P->next;
- }
- T = P->next;
-
- Q->prior = P;
- Q->next = T;
-
- P->next = Q;
- Q->next = T;
- }
-
- void DeleteDoubleLinked(PDoubleLinked L,int index)
- {
- PDoubleLinked P = L;
- PDoubleLinked Q;
-
- while (--index != 0)
- {
- P = P->next;
- }
-
- Q = P->next;
- P->next = Q->next;
- Q->next->prior = P;
- free(Q);
- }
-
- void ModifyDoubleLinked(PDoubleLinked L,int elem)
- {
- PDoubleLinked P = L;
-
- while (index-- != 0)
- {
- P = P->next;
- }
-
- P->elem = elem;
- }
-