双链表和静态链表简单练习

代码是基于408王道考研书

#include <stdio.h>
#include <stdlib.h>
#include<stdbool.h>
#define MaxSize 50
typedef struct DNode{//双链表
    int data;
    struct DNode *prior,*next;
}DNode;
//静态链表
typedef struct{
    int data;
    int next;
}SLinkList[MaxSize];//这里用到了结构体数组,等价于下面那种写法
/*
struct Node{
    int data;
    int next;
};
typedef struct Node SLinkList[MaxSize];
*/
bool InitList(DNode *L){//双链表初始化
    L=(DNode *)malloc(sizeof(DNode));
    if(L==NULL)    //内存不足,分配失败
        return false;
    L->prior=NULL;
    L->next=NULL;
    return true;
}
void testDNodeList(){
    DNode *L;
      InitList(L);
}
//双链表的插入
bool InsertList(DNode *p,DNode *s){
    if(p==NULL||s==NULL)
        return false;
    s->next=p->next;
    if(p->next!=NULL)
        p->next->prior=s;
    s->prior=p;
    p->next=s;
    return true;
}
//双链表的删除,删除后继节点
bool DeleteList(DNode *p){
    if(p==NULL)
        return false;
    DNode *q=p->next;
    if(q==NULL)
        return false;
    if(q->next!=NULL)
        q->next->prior=p;
    free(q);
    return true;
}
//静态链表初始化
void testSLinkList(){
    SLinkList a;
}
int main() {

    return 0;
}

 链表的优点是插入和删除操作不用像顺序表一样移动大量元素,只需要修改指针,但链表也失去了顺序表随机存取的优点;链表可以解决顺序表需要大量连续的存储空间的问题,但是附加的指针域也存在浪费空间的缺点。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值