首页 > 编程语言 > 详细

C语言 双链表 相关操作

时间:2021-07-08 00:16:17      阅读:17      评论:0      收藏:0      [点我收藏+]

数据结构双链表

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef struct DNode{
 5     int data;
 6     struct DNode *prior,*next;
 7 }DNode,*DLinklist;
 8 
 9 //初始化双链表
10 bool InitDLinkList(DLinklist &L){
11     
12     L = (DNode *)malloc(sizeof(DNode));            //    分配一个头结点    
13     if(L==NULL)
14         return false;                            //内存不足,分配失败
15     L->prior = NULL;                            //头结点的prior永远指向NULL
16     L->next = NULL;                                //头结点之后暂时没有结点
17     
18     return true; 
19 } 
20 
21 //判断双链表是否为空
22 bool Empty(DLinklist L){
23     if(L->next == NULL)
24         return true;
25     return false;
26 } 
27 
28 //插入操作    在p结点之后插入s结点
29 bool InsertNextDNode(DNode *p,DNode *s){
30     
31     if(p==NULL || s==NULL);                        //非法参数 
32         return false;
33     s->next = p->next;
34     if(p->next != NULL)
35         p->next->prior=s;
36     s->prior=p;
37     p->next=s;
38     return true;     
39 } 
40 
41 //删除操作  删除p结点的后继结点
42 bool DeleteNextDNode(DNode *p){
43     if(p==NULL)
44         return false;
45     DNode *q = p->next;                            //找到p的后继结点 
46     if(q==NULL)                                    //p没有后继结点 
47         return false; 
48     p->next = q->next;
49     if(q->next!=NULL)
50         q->next->prior=p;                        //q结点不是最后一个结点
51     free(q);
52     return true; 
53 } 
54 
55 //销毁双链表
56 void DestoryList(DLinklist &L){
57     //循环释放各个数据结点
58     while(L->next != NULL)
59         DeleteNextDNode(L);
60     free(L);
61     L=NULL;         
62 } 
63 
64 //遍历  一个while循环即可
65 
66 int main(){
67     return 0;
68 } 
69  

 

C语言 双链表 相关操作

原文:https://www.cnblogs.com/hjg520/p/14983612.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!