《数据结构上机实验(C语言实现)》笔记(2 / 1)

文章目录

    验证性实验
        实现顺序表各种基本运算的算法
            放码
                sqlist.h
                sqlist.cpp
                exp2-1.cpp
            结果
        实现单链表各种基本运算的算法
            放码
                linklist.h
                linklist.cpp
                exp2-2.cpp
            结果
        实现双链表各种基本运算的算法
            放码
                dlinklist.h
                dlinklist.cpp
                exp2-3.cpp
            结果
        实现循环单链表各种基本运算的算法
            放码
                clinklist.h
                clinklist.cpp
                exp2-4.cpp
            结果
        实现循环双链表各种基本运算的算法
            放码
                cdlinklist.h
                cdlinklist.cpp
                exp2-5.cpp
            结果
    设计性实验
        将单链表按基准划分
            说明
            放码
            结果
        将两个单链表合并为一个单链表
            说明
            放码
            结果
        求集合(用单链表表示)的并、交和差运算
            说明
            放码
            结果
        实现两个多项式相加运算
            说明
            放码
            结果
    综合性实验
        实现两个多项式相乘运算
            说明
            放码
            结果
        职工信息的综合运算
            说明
            放码
            结果
        用单链表实现两个大整数相加运算
            说明
            放码
            结果

验证性实验
实现顺序表各种基本运算的算法
放码
sqlist.h

#ifndef SQLIST_H
#define SQLIST_H

#define MaxSize 50
typedef char ElemType;
typedef struct
{
    ElemType data[MaxSize];        //存放顺序表元素
    int length;                    //存放顺序表的长度
} SqList;                        //声明顺序表的类型

void CreateList(SqList *&L, ElemType a[], int n); //整体建立顺序表
void InitList(SqList *&L);    //初始化线性表
void DestroyList(SqList *&L);  //销毁线性表
bool ListEmpty(SqList *L);    //判线性表是否为空表
int ListLength(SqList *L);    //求线性表的长度
void DispList(SqList *L);    //输出线性表
bool GetElem(SqList *L, int i, ElemType &e);    //求线性表中第i个元素值
int LocateElem(SqList *L, ElemType e);    //查找第一个值域为e的元素序号
bool ListInsert(SqList *&L, int i, ElemType e);    //插入第i个元素
bool ListDelete(SqList *&L, int i, ElemType &e); //删除第i个元素

#endif

sqlist.cpp

//顺序表运算算法
#include <stdio.h>
#include <malloc.h>
#include "sqlist.h"

void CreateList(SqList * & L, ElemType a[], int n) //整体建立顺序表
{
    L = (SqList *)malloc(sizeof(SqList));
    for (int i = 0; i < n; i++)
        L->data[i] = a[i];
    L->length = n;
}

void InitList(SqList * & L) //初始化线性表
{
    L = (SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间
    L->length = 0;
}

void DestroyList(SqList * & L) //销毁线性表
{
    free(L);
}

bool ListEmpty(SqList * L) //判线性表是否为空表
{
    return (L->length == 0);
}

int ListLength(SqList * L) //求线性表的长度
{
    return (L->length);
}

void DispList(SqList * L) //输出线性表
{
    for (int i = 0; i < L->length; i++)
        printf("%c ", L->data[i]);
    printf("\n");
}

bool GetElem(SqList * L, int i, ElemType & e) //求线性表中第i个元素值
{
    if (i < 1 || i > L->length)
        return false;
    e = L->data[i - 1];
    return true;
}

int LocateElem(SqList * L, ElemType e) //查找第一个值域为e的元素序号
{
    int i = 0;
    while (i < L->length && L->data[i] != e) i++;
    if (i >= L->length)
        return 0;
    else
        return i + 1;
}

bool ListInsert(SqList * & L, int i, ElemType e) //插入第i个元素
{
    int j;
    if (i < 1 || i > L->length + 1)
        return false;
    i--; //将顺序表位序转化为elem下标
    for (j = L->length; j > i; j--) //将data[i]及后面元素后移一个位置
        L->data[j] = L->data[j - 1];
    L->data[i] = e;
    L->length++; //顺序表长度增1
    return true;
}

bool ListDelete(SqList * & L, int i, ElemType & e) //删除第i个元素
{
    int j;
    if (i < 1 || i > L->length)
        return false;
    i--; //将顺序表位序转化为elem下标
    e = L->data[i];
    for (j = i; j < L->length - 1; j++) //将data[i]之后的元素前移一个位置
        L->data[j] = L->data[j + 1];
    L->length--; //顺序表长度减1
    return true;

exp2-1.cpp

//文件名:exp2-1.cpp
#include "sqlist.h"
#include <stdio.h>

int main()
{
    SqList *L;
    ElemType e;
    printf("顺序表的基本运算如下:\n");
    printf("  (1)初始化顺序表L\n");
    InitList(L);

    printf("  (2)依次插入a,b,c,d,e元素\n");
    ListInsert(L,1,'a');
    ListInsert(L,2,'b');
    ListInsert(L,3,'c');
    ListInsert(L,4,'d');
    ListInsert(L,5,'e');
    
    printf("  (3)输出顺序表L:");
    DispList(L);
    
    printf("  (4)顺序表L长度:%d\n",ListLength(L));
    
    printf("  (5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空"));
    
    GetElem(L,3,e);
    printf("  (6)顺序表L的第3个元素:%c\n",e);
    
    printf("  (7)元素a的位置:%d\n", LocateElem(L,'a'));
    
    printf("  (8)在第4个元素位置上插入f元素\n");
    ListInsert(L, 4, 'f');
    
    printf("  (9)输出顺序表L:");
    DispList(L);
    
    printf("  (10)删除L的第3个元素\n");
    ListDelete(L,3,e);
    
    printf("  (11)输出顺序表L:");
    DispList(L);
    
    printf("  (12)释放顺序表L\n");
    DestroyList(L);
    
    return 1;
}

结果

顺序表的基本运算如下:
  (1)初始化顺序表L
  (2)依次插入a,b,c,d,e元素
  (3)输出顺序表L:a b c d e
  (4)顺序表L长度:5
  (5)顺序表L为非空
  (6)顺序表L的第3个元素:c
  (7)元素a的位置:1
  (8)在第4个元素位置上插入f元素
  (9)输出顺序表L:a b c f d e
  (10)删除L的第3个元素
  (11)输出顺序表L:a b f d e
  (12)释放顺序表L
请按任意键继续. . .

实现单链表各种基本运算的算法
放码
linklist.h

#ifndef LINKLIST_H
#define LINKLIST_H

typedef int ElemType;
typedef struct LNode {
    ElemType data;
    struct LNode *next; //指向后继结点
}LinkNode; //声明双链表结点类型

void CreateListF(LinkNode *&L, ElemType a[], int n); //头插法建双链表
void CreateListR(LinkNode *&L, ElemType a[], int n); //尾插法建双链表
void InitList(LinkNode *&L); //初始化线性表
void DestroyList(LinkNode *&L); //销毁线性表
bool ListEmpty(LinkNode *L); //判线性表是否为空表
int ListLength(LinkNode *L); //求线性表的长度
void DispList(LinkNode *L); //输出线性表
bool GetElem(LinkNode *L, int i, ElemType &e); //求线性表中第i个元素值
int LocateElem(LinkNode *L, ElemType e); //查找第一个值域为e的元素序号
bool ListInsert(LinkNode *&L, int i, ElemType e); //插入第i个元素
bool ListDelete(LinkNode *&L, int i, ElemType &e); //删除第i个元素

#endif

linklist.cpp

//单链表运算算法
#include <stdio.h>
#include <malloc.h>
#include "linklist.h"

void CreateListF(LinkNode *&L, ElemType a[], int n) //头插法建立单链表
{
    LinkNode *s;
    L = (LinkNode *)malloc(sizeof(LinkNode)); //创建头结点
    L->next = NULL;
    for (int i = 0; i < n; i++) {
        s = (LinkNode *)malloc(sizeof(LinkNode)); //创建新结点s
        s->data = a[i];
        s->next = L->next; //将结点s插在原开始结点之前,头结点之后
        L->next = s;
    }
}

void CreateListR(LinkNode *&L, ElemType a[], int n) //尾插法建立单链表
{
    LinkNode *s, *r;
    L = (LinkNode *)malloc(sizeof(LinkNode)); //创建头结点
    L->next = NULL;
    r = L; //r始终指向尾结点,开始时指向头结点
    for (int i = 0; i < n; i++) {
        s = (LinkNode *)malloc(sizeof(LinkNode)); //创建新结点s
        s->data = a[i];
        r->next = s; //将结点s插入r结点之后
        r = s;
    }
    r->next = NULL; //尾结点next域置为NULL
}

void InitList(LinkNode *&L) //初始化线性表
{
    L = (LinkNode *)malloc(sizeof(LinkNode)); //创建头结点
    L->next = NULL; //单链表置为空表
}

void DestroyList(LinkNode *&L) //销毁线性表
{
    LinkNode *pre = L, *p = pre->next;
    while (p != NULL) {
        free(pre);
        pre = p; //pre、p同步后移一个结点                    
        p = pre->next;
    }
    free(pre); //此时p为NULL,pre指向尾结点,释放它
}

bool ListEmpty(LinkNode *L) //判线性表是否为空表
{
    return (L->next == NULL);
}

int ListLength(LinkNode *L) //求线性表的长度
{
    int i = 0;
    LinkNode *p = L; //p指向头结点,n置为0(即头结点的序号为0)
    while (p->next != NULL) {
        i++;
        p = p->next;
    }
    return (i); //循环结束,p指向尾结点,其序号i为结点个数
}

void DispList(LinkNode *L) //输出线性表
{
    LinkNode *p = L->next; //p指向首结点
    while (p != NULL) //p不为NULL,输出p结点的data域
    {
        printf("%c ", p->data);
        p = p->next; //p移向下一个结点
    }
    printf("\n");
}

bool GetElem(LinkNode *L, int i, ElemType &e) //求线性表中第i个元素值
{
    int j = 0;
    if (i <= 0) return false; //i错误返回假
    LinkNode *p = L; //p指向头结点,j置为0(即头结点的序号为0)
    while (j < i && p != NULL) //找第i个结点p
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //不存在第i个数据结点,返回false
        return false;
    else //存在第i个数据结点,返回true
    {
        e = p->data;
        return true;
    }
}

int LocateElem(LinkNode *L, ElemType e) //查找第一个值域为e的元素序号
{
    int i = 1;
    LinkNode *p = L->next; //p指向首结点,i置为1(即首结点的序号为1)
    while (p != NULL && p->data != e) //查找data值为e的结点,其序号为i
    {
        p = p->next;
        i++;
    }
    if (p == NULL) //不存在值为e的结点,返回0
        return (0);
    else //存在值为e的结点,返回其逻辑序号i
        return (i);
}

bool ListInsert(LinkNode *&L, int i, ElemType e) //插入第i个元素
{
    int j = 0;
    if (i <= 0) return false; //i错误返回假
    LinkNode *p = L, *s; //p指向头结点,j置为0(即头结点的序号为0)
    while (j < i - 1 && p != NULL) //查找第i-1个结点p
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //未找到第i-1个结点,返回false
        return false;
    else //找到第i-1个结点p,插入新结点并返回true
    {
        s = (LinkNode *)malloc(sizeof(LinkNode));
        s->data = e; //创建新结点s,其data域置为e
        s->next = p->next; //将结点s插入到结点p之后
        p->next = s;
        return true;
    }
}

bool ListDelete(LinkNode *&L, int i, ElemType &e) //删除第i个元素
{
    int j = 0;
    if (i <= 0) return false; //i错误返回假
    LinkNode *p = L, *q; //p指向头结点,j置为0(即头结点的序号为0)
    while (j < i - 1 && p != NULL) //查找第i-1个结点
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //未找到第i-1个结点,返回false
        return false;
    else //找到第i-1个结点p
    {
        q = p->next; //q指向第i个结点
        if (q == NULL) //若不存在第i个结点,返回false
            return false;
        e = q->data;
        p->next = q->next; //从单链表中删除q结点
        free(q); //释放q结点
        return true; //返回true表示成功删除第i个结点
    }

exp2-2.cpp

//文件名:exp2-2.cpp
#include <stdio.h>
#include "linklist.h"

int main() {
    LinkNode * h;
    ElemType e;
    printf("单链表的基本运算如下:\n");
    printf("  (1)初始化单链表h\n");
    InitList(h);

    printf("  (2)依次采用尾插法插入a,b,c,d,e元素\n");
    ListInsert(h, 1, 'a');
    ListInsert(h, 2, 'b');
    ListInsert(h, 3, 'c');
    ListInsert(h, 4, 'd');
    ListInsert(h, 5, 'e');

    printf("  (3)输出单链表h:");
    DispList(h);

    printf("  (4)单链表h长度:%d\n", ListLength(h));
    printf("  (5)单链表h为%s\n", (ListEmpty(h) ? "空" : "非空"));
    GetElem(h, 3, e);

    printf("  (6)单链表h的第3个元素:%c\n", e);
    printf("  (7)元素a的位置:%d\n", LocateElem(h, 'a'));
    printf("  (8)在第4个元素位置上插入f元素\n");
    ListInsert(h, 4, 'f');

    printf("  (9)输出单链表h:");
    DispList(h);

    printf("  (10)删除h的第3个元素\n");
    ListDelete(h, 3, e);

    printf("  (11)输出单链表h:");
    DispList(h);

    printf("  (12)释放单链表h\n");
    DestroyList(h);

结果

单链表的基本运算如下:
  (1)初始化单链表h
  (2)依次采用尾插法插入a,b,c,d,e元素
  (3)输出单链表h:a b c d e
  (4)单链表h长度:5
  (5)单链表h为非空
  (6)单链表h的第3个元素:c
  (7)元素a的位置:1
  (8)在第4个元素位置上插入f元素
  (9)输出单链表h:a b c f d e
  (10)删除h的第3个元素
  (11)输出单链表h:a b f d e
  (12)释放单链表h
请按任意键继续. . .

实现双链表各种基本运算的算法
放码
dlinklist.h

#ifndef DLINKLIST_H
#define DLINKLIST_H

typedef int ElemType;
typedef struct DNode {
    ElemType data;
    struct DNode *prior; //指向前驱结点
    struct DNode *next; //指向后继结点
}DLinkNode; //声明双链表结点类型

void CreateListF(DLinkNode *&L, ElemType a[], int n); //头插法建双链表
void CreateListR(DLinkNode *&L, ElemType a[], int n); //尾插法建双链表
void InitList(DLinkNode *&L); //初始化线性表
void DestroyList(DLinkNode *&L); //销毁线性表
bool ListEmpty(DLinkNode *L); //判线性表是否为空表
int ListLength(DLinkNode *L); //求线性表的长度
void DispList(DLinkNode *L); //输出线性表
bool GetElem(DLinkNode *L, int i, ElemType &e); //求线性表中第i个元素值
int LocateElem(DLinkNode *L, ElemType e); //查找第一个值域为e的元素序号
bool ListInsert(DLinkNode *&L, int i, ElemType e); //插入第i个元素
bool ListDelete(DLinkNode *&L, int i, ElemType &e); //删除第i个元素

#endif

dlinklist.cpp

//双链表运算算法
#include <stdio.h>
#include <malloc.h>
#include "dlinklist.h"

void CreateListF(DLinkNode *&L, ElemType a[], int n) //头插法建双链表
{
    DLinkNode *s;
    L = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建头结点
    L->prior = L->next = NULL;
    for (int i = 0; i < n; i++) {
        s = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建新结点
        s->data = a[i];
        s->next = L->next; //将结点s插在原开始结点之前,头结点之后
        if (L->next != NULL) L->next->prior = s;
        L->next = s;
        s->prior = L;
    }
}

void CreateListR(DLinkNode *&L, ElemType a[], int n) //尾插法建双链表
{
    DLinkNode *s, *r;
    L = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建头结点
    L->prior = L->next = NULL;
    r = L; //r始终指向终端结点,开始时指向头结点
    for (int i = 0; i < n; i++) {
        s = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建新结点
        s->data = a[i];
        r->next = s;
        s->prior = r; //将结点s插入结点r之后
        r = s;
    }
    r->next = NULL; //尾结点next域置为NULL
}

void InitList(DLinkNode *&L) //初始化线性表
{
    L = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建头结点
    L->prior = L->next = NULL;
}

void DestroyList(DLinkNode *&L) //销毁线性表
{
    DLinkNode *pre = L, *p = pre->next;
    while (p != NULL) {
        free(pre);
        pre = p; //pre、p同步后移一个结点
        p = pre->next;
    }
    free(p);
}

bool ListEmpty(DLinkNode *L) //判线性表是否为空表
{
    return (L->next == NULL);
}

int ListLength(DLinkNode *L) //求线性表的长度
{
    DLinkNode *p = L;
    int i = 0; //p指向头结点,i设置为0
    while (p->next != NULL) //找尾结点p
    {
        i++; //i对应结点p的序号
        p = p->next;
    }
    return (i);
}

void DispList(DLinkNode *L) //输出线性表
{
    DLinkNode *p = L->next;
    while (p != NULL) {
        printf("%c ", p->data);
        p = p->next;
    }
    printf("\n");
}

bool GetElem(DLinkNode *L, int i, ElemType &e) //求线性表中第i个元素值
{
    int j = 0;
    DLinkNode *p = L;
    if (i <= 0) return false; //i错误返回假
    while (j < i && p != NULL) //查找第i个结点p
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //没有找到返回假            
        return false;
    else //找到了提取值并返回真
    {
        e = p->data;
        return true;
    }
}

int LocateElem(DLinkNode *L, ElemType e) //查找第一个值域为e的元素序号
{
    int i = 1;
    DLinkNode *p = L->next;
    while (p != NULL && p->data != e) //查找第一个值域为e的结点p
    {
        i++; //i对应结点p的序号
        p = p->next;
    }
    if (p == NULL) //没有找到返回0
        return (0);
    else //找到了返回其序号
        return (i);
}

bool ListInsert(DLinkNode *&L, int i, ElemType e) //插入第i个元素
{
    int j = 0;
    DLinkNode *p = L, *s; //p指向头结点,j设置为0
    if (i <= 0) return false; //i错误返回假
    while (j < i - 1 && p != NULL) //查找第i-1个结点p
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //未找到第i-1个结点
        return false;
    else //找到第i-1个结点p
    {
        s = (DLinkNode *)malloc(sizeof(DLinkNode)); //创建新结点s
        s->data = e;
        s->next = p->next; //将结点s插入到结点p之后
        if (p->next != NULL)
            p->next->prior = s;
        s->prior = p;
        p->next = s;
        return true;
    }
}

bool ListDelete(DLinkNode *&L, int i, ElemType &e) //删除第i个元素
{
    int j = 0;
    DLinkNode *p = L, *q; //p指向头结点,j设置为0
    if (i <= 0) return false; //i错误返回假
    while (j < i - 1 && p != NULL) //查找第i-1个结点p
    {
        j++;
        p = p->next;
    }
    if (p == NULL) //未找到第i-1个结点
        return false;
    else //找到第i-1个节p
    {
        q = p->next; //q指向第i个结点
        if (q == NULL) //当不存在第i个结点时返回false
            return false;
        e = q->data;
        p->next = q->next; //从双链表中删除结点q
        if (p->next != NULL) //若p结点存在后继结点,修改其前驱指针
            p->next->prior = p;
        free(q); //释放q结点
        return true;

exp2-3.cpp

//文件名:exp2-3.cpp
#include "dlinklist.h"
#include <stdio.h>

int main() {
    DLinkNode *h;
    ElemType e;
    printf("双链表的基本运算如下:\n");
    printf("  (1)初始化双链表h\n");
    InitList(h);

    printf("  (2)依次采用尾插法插入a,b,c,d,e元素\n");
    ListInsert(h, 1, 'a');
    ListInsert(h, 2, 'b');
    ListInsert(h, 3, 'c');
    ListInsert(h, 4, 'd');
    ListInsert(h, 5, 'e');

    printf("  (3)输出双链表h:");
    DispList(h);

    printf("  (4)双链表h长度:%d\n", ListLength(h));

    printf("  (5)双链表h为%s\n", (ListEmpty(h) ? "空" : "非空"));
    GetElem(h, 3, e);

    printf("  (6)双链表h的第3个元素:%c\n", e);

    printf("  (7)元素a的位置:%d\n", LocateElem(h, 'a'));

    printf("  (8)在第4个元素位置上插入f元素\n");
    ListInsert(h, 4, 'f');

    printf("  (9)输出双链表h:");
    DispList(h);

    printf("  (10)删除h的第3个元素\n");
    ListDelete(h, 3, e);

    printf("  (11)输出双链表h:");
    DispList(h);

    printf("  (12)释放双链表h\n");
    DestroyList(h);

    return 1;

结果

双链表的基本运算如下:
  (1)初始化双链表h
  (2)依次采用尾插法插入a,b,c,d,e元素
  (3)输出双链表h:a b c d e
  (4)双链表h长度:5
  (5)双链表h为非空
  (6)双链表h的第3个元素:c
  (7)元素a的位置:1
  (8)在第4个元素位置上插入f元素
  (9)输出双链表h:a b c f d e
  (10)删除h的第3个元素
  (11)输出双链表h:a b f d e
  (12)释放双链表h
请按任意键继续. . .

实现循环单链表各种基本运算的算法
放码
clinklist.h

#ifndef CLINKLIST_H
#define CLINKLIST_H

typedef int ElemType;
typedef struct LNode        //定义单链表结点类型
{
    ElemType data;
    struct LNode *next;
} LinkNode;

void CreateListF(LinkNode *&L, ElemType a[], int n); //头插法建立循环单链表
void CreateListR(LinkNode *&L, ElemType a[], int n); //尾插法建立循环单链表
void InitList(LinkNode *&L);    //初始化线性表
void DestroyList(LinkNode *&L);    //销毁线性表
bool ListEmpty(LinkNode *L);        //判线性表是否为空表
int ListLength(LinkNode *L);        //求线性表的长度
void DispList(LinkNode *L);        //输出线性表
bool GetElem(LinkNode *L, int i, ElemType &e);    //求线性表中第i个元素值
int LocateElem(LinkNode *L, ElemType e);  //查找第一个值域为e的元素序号
bool ListInsert(LinkNode *&L, int i, ElemType e);    //插入第i个元素
bool ListDelete(LinkNode *&L, int i, ElemType &e);    //删除第i个元素

#endif // !CLINKLIST_H

linklist.cpp

//循环单链表运算算法
#include <stdio.h>
#include <malloc.h>
#include "clinklist.h"

void CreateListF(LinkNode *&L, ElemType a[], int n) //头插法建立循环单链表
{
    LinkNode *s; int i;
    L = (LinkNode *)malloc(sizeof(LinkNode));      //创建头结点
    L->next = NULL;
    for (i = 0; i < n; i++)
    {
        s = (LinkNode *)malloc(sizeof(LinkNode));//创建新结点
        s->data = a[i];
        s->next = L->next;            //将结点s插在原开始结点之前,头结点之后
        L->next = s;
    }
    s = L->next;
    while (s->next != NULL)            //查找尾结点,由s指向它
        s = s->next;
    s->next = L;                        //尾结点next域指向头结点

}

void CreateListR(LinkNode *&L, ElemType a[], int n) //尾插法建立循环单链表
{
    LinkNode *s, *r; int i;
    L = (LinkNode *)malloc(sizeof(LinkNode));      //创建头结点
    L->next = NULL;
    r = L;                    //r始终指向终端结点,开始时指向头结点
    for (i = 0; i < n; i++)
    {
        s = (LinkNode *)malloc(sizeof(LinkNode));//创建新结点
        s->data = a[i];
        r->next = s;            //将结点s插入结点r之后
        r = s;
    }
    r->next = L;                //尾结点next域指向头结点
}

void InitList(LinkNode *&L)    //初始化线性表
{
    L = (LinkNode *)malloc(sizeof(LinkNode));    //创建头结点
    L->next = L;
}

void DestroyList(LinkNode *&L)    //销毁线性表
{
    LinkNode *pre = L, *p = pre->next;
    while (p != L)
    {
        free(pre);
        pre = p;                    //pre、p同步后移一个结点
        p = pre->next;
    }
    free(pre);                    //此时p=L,pre指向尾结点,释放它
}

bool ListEmpty(LinkNode *L)        //判线性表是否为空表
{
    return(L->next == L);
}

int ListLength(LinkNode *L)        //求线性表的长度
{
    LinkNode *p = L; int i = 0;        //p指向头结点,n置为0(即头结点的序号为0)
    while (p->next != L)
    {
        i++;
        p = p->next;
    }
    return(i);                    //循环结束,p指向尾结点,其序号n为结点个数
}

void DispList(LinkNode *L)        //输出线性表
{
    LinkNode *p = L->next;
    while (p != L)                //p不为L,输出p结点的data域
    {
        printf("%c ", p->data);
        p = p->next;
    }
    printf("\n");
}

bool GetElem(LinkNode *L, int i, ElemType &e)    //求线性表中第i个元素值
{
    int j = 1;
    LinkNode *p = L->next;
    if (i <= 0 || L->next == L)        //i错误或者空表返回假
        return false;
    if (i == 1)                    //求第1个结点值,作为特殊情况处理
    {
        e = L->next->data;
        return true;
    }
    else                        //i不为1时
    {
        while (j <= i - 1 && p != L)    //找第i个结点p
        {
            j++;
            p = p->next;
        }
        if (p == L)                //没有找到返回假
            return false;
        else                    //找到了提取它的值并返回整
        {
            e = p->data;
            return true;
        }
    }
}

int LocateElem(LinkNode *L, ElemType e)  //查找第一个值域为e的元素序号
{
    LinkNode *p = L->next;
    int i = 1;
    while (p != L && p->data != e)    //查找第一个值域为e的结点p
    {
        p = p->next;
        i++;                    //i对应结点p的序号
    }
    if (p == L)
        return(0);                //没有找到返回0
    else
        return(i);                //找到了返回其序号
}

bool ListInsert(LinkNode *&L, int i, ElemType e)    //插入第i个元素
{
    int j = 1;
    LinkNode *p = L, *s;
    if (i <= 0) return false;        //i错误返回假
    if (p->next == L || i == 1)        //原单链表为空表或i=1作为特殊情况处理
    {
        s = (LinkNode *)malloc(sizeof(LinkNode));    //创建新结点s
        s->data = e;
        s->next = p->next;        //将结点s插入到结点p之后
        p->next = s;
        return true;
    }
    else
    {
        p = L->next;
        while (j <= i - 2 && p != L)    //找第i-1个结点p
        {
            j++;
            p = p->next;
        }
        if (p == L)                //未找到第i-1个结点
            return false;
        else                    //找到第i-1个结点p
        {
            s = (LinkNode *)malloc(sizeof(LinkNode));    //创建新结点s
            s->data = e;
            s->next = p->next;                        //将结点s插入到结点p之后
            p->next = s;
            return true;
        }
    }
}

bool ListDelete(LinkNode *&L, int i, ElemType &e)    //删除第i个元素
{
    int j = 1;
    LinkNode *p = L, *q;
    if (i <= 0 || L->next == L)
        return false;            //i错误或者空表返回假
    if (i == 1)                    //i=1作为特殊情况处理
    {
        q = L->next;                //删除第1个结点
        e = q->data;
        L->next = q->next;
        free(q);
        return true;
    }
    else                        //i不为1时
    {
        p = L->next;
        while (j <= i - 2 && p != L)    //找第i-1个结点p
        {
            j++;
            p = p->next;
        }
        if (p == L)                //未找到第i-1个结点
            return false;
        else                    //找到第i-1个结点p
        {
            q = p->next;            //q指向要删除的结点
            e = q->data;
            p->next = q->next;    //从单链表中删除q结点
            free(q);            //释放q结点
            return true;
        }

exp2-4.cpp

//文件名:exp2-4.cpp
#include "clinklist.h"
#include <stdio.h>

int main()
{
    LinkNode *h;
    ElemType e;
    
    printf("循环单链表的基本运算如下:\n");
    printf("  (1)初始化循环单链表h\n");
    InitList(h);

    printf("  (2)依次采用尾插法插入a,b,c,d,e元素\n");
    ListInsert(h, 1, 'a');
    ListInsert(h, 2, 'b');
    ListInsert(h, 3, 'c');
    ListInsert(h, 4, 'd');
    ListInsert(h, 5, 'e');

    printf("  (3)输出循环单链表h:");
    DispList(h);

    printf("  (4)循环单链表h长度:%d\n", ListLength(h));

    printf("  (5)循环单链表h为%s\n", (ListEmpty(h) ? "空" : "非空"));

    GetElem(h, 3, e);
    printf("  (6)循环单链表h的第3个元素:%c\n", e);

    printf("  (7)元素a的位置:%d\n", LocateElem(h, 'a'));

    printf("  (8)在第4个元素位置上插入f元素\n");
    ListInsert(h, 4, 'f');

    printf("  (9)输出循环单链表h:");
    DispList(h);
    
    printf("  (10)删除h的第3个元素\n");
    ListDelete(h, 3, e);
    
    printf("  (11)输出循环单链表h:");
    DispList(h);
    
    printf("  (12)释放循环单链表h\n");
    DestroyList(h);
    
    return 1;
}

结果

循环单链表的基本运算如下:
  (1)初始化循环单链表h
  (2)依次采用尾插法插入a,b,c,d,e元素
  (3)输出循环单链表h:a b c d e
  (4)循环单链表h长度:5
  (5)循环单链表h为非空
  (6)循环单链表h的第3个元素:c
  (7)元素a的位置:1
  (8)在第4个元素位置上插入f元素
  (9)输出循环单链表h:a b c f d e
  (10)删除h的第3个元素
  (11)输出循环单链表h:a b f d e
  (12)释放循环单链表h
请按任意键继续. . .

实现循环双链表各种基本运算的算法
放码https://www.ixigua.com/search/%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%85%AC%E5%8F%B8%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.douban.com/search?q=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%85%AC%E5%8F%B8%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847
www.iyiou.com/search?p=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://www.douban.com/search?q=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
https://www.ixigua.com/search/%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%85%AC%E5%8F%B8%E7%BD%91%E7%AB%99-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.ixigua.com/search/%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%85%AC%E5%8F%B8%E7%BD%91%E7%AB%99-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.ixigua.com/search/%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%85%AC%E5%8F%B8%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
www.huoxing24.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E5%AE%98%E7%BD%91-19869481847
www.huoxing24.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
https://www.migu.cn/search.html?content=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847&type=allLobby&_ch=
www.huoxing24.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847
https://www.douban.com/search?q=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
https://www.migu.cn/search.html?content=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E5%AE%98%E7%BD%91-19869481847&type=allLobby&_ch=
https://www.migu.cn/search.html?content=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847&type=allLobby&_ch=
https://www.douban.com/search?q=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847
https://www.ixigua.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.ixigua.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.douban.com/search?q=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
https://www.douban.com/search?q=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847
https://so.youku.com/search_video/q_%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847?searchfrom=1
https://www.migu.cn/search.html?content=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847&type=allLobby&_ch=
https://www.ixigua.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.migu.cn/search.html?content=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847&type=allLobby&_ch=
https://so.youku.com/search_video/q_%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E7%BD%91%E7%AB%99-19869481847?searchfrom=1
https://so.youku.com/search_video/q_%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847?searchfrom=1
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847?searchfrom=1
https://www.ixigua.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E7%BD%91%E7%AB%99-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.ixigua.com/search/%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E5%AE%98%E7%BD%91-19869481847?searchfrom=1
https://www.migu.cn/search.html?content=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E5%AE%A2%E6%9C%8D-19869481847&type=allLobby&_ch=
https://www.migu.cn/search.html?content=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E5%AE%A2%E6%9C%8D-19869481847&type=allLobby&_ch=
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%BC%8E%E7%9B%9B%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%BC%8E%E7%9B%9B%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847
www.iyiou.com/search?p=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E7%BB%8F%E7%90%86-19869481847
www.huoxing24.com/search/%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E7%BB%8F%E7%90%86-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E5%87%AF%E5%8D%9A%E5%9B%BD%E9%99%85%E5%AE%A2%E6%9C%8D-19869481847
https://www.migu.cn/search.html?content=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847&type=allLobby&_ch=
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E5%AE%98%E7%BD%91-19869481847
https://www.ixigua.com/search/%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.migu.cn/search.html?content=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847&type=allLobby&_ch=
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847?searchfrom=1
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%BC%8E%E7%9B%9B%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847?searchfrom=1
https://www.migu.cn/search.html?content=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9Dapp%E4%B8%8B%E8%BD%BD-19869481847&type=allLobby&_ch=
https://www.douban.com/search?q=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847?searchfrom=1
www.iyiou.com/search?p=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E5%AE%A2%E6%9C%8D-19869481847
https://www.ixigua.com/search/%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9Dapp%E4%B8%8B%E8%BD%BD-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
www.huoxing24.com/search/%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://so.youku.com/search_video/q_%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847?searchfrom=1
https://www.douban.com/search?q=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://search.jd.com/Search?keyword=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.migu.cn/search.html?content=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E5%AE%A2%E6%9C%8D-19869481847&type=allLobby&_ch=
https://www.ixigua.com/search/%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E5%AE%98%E7%BD%91-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.xinpianchang.com/search?kw=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E7%BD%91%E7%AB%99-19869481847
https://www.xinpianchang.com/search?kw=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E5%AE%98%E7%BD%91-19869481847
https://www.ixigua.com/search/%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.xinpianchang.com/search?kw=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
https://search.jd.com/Search?keyword=%E7%99%BE%E8%83%9C%E5%B8%9D%E5%AE%9D%E7%BD%91%E7%AB%99-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.migu.cn/search.html?content=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85app%E4%B8%8B%E8%BD%BD-19869481847&type=allLobby&_ch=
https://so.youku.com/search_video/q_%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E7%BB%8F%E7%90%86-19869481847?searchfrom=1
https://www.xinpianchang.com/search?kw=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E5%87%AF%E5%8D%9A%E5%9B%BD%E9%99%85%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://so.youku.com/search_video/q_%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847?searchfrom=1
https://so.youku.com/search_video/q_%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847?searchfrom=1
https://www.migu.cn/search.html?content=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E7%BB%8F%E7%90%86-19869481847&type=allLobby&_ch=
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://so.youku.com/search_video/q_%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E5%AE%98%E7%BD%91-19869481847?searchfrom=1
https://www.xinpianchang.com/search?kw=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847
https://www.migu.cn/search.html?content=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847&type=allLobby&_ch=
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85app%E4%B8%8B%E8%BD%BD-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.xinpianchang.com/search?kw=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://so.youku.com/search_video/q_%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847?searchfrom=1
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.xinpianchang.com/search?kw=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.xinpianchang.com/search?kw=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://search.jd.com/Search?keyword=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E7%BD%91%E7%AB%99-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://www.xinpianchang.com/search?kw=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E5%8D%8E%E7%BA%B3%E5%85%AC%E5%8F%B8%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E5%8D%8E%E7%BA%B3%E5%85%AC%E5%8F%B8%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E5%8D%8E%E7%BA%B3%E5%85%AC%E5%8F%B8%E7%BD%91%E7%AB%99-19869481847
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
https://search.jd.com/Search?keyword=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BD%91%E7%AB%99-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%A6%8F%E5%88%A9%E6%9D%A5%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%9E%9C%E5%8D%9A%E4%B8%9C%E6%96%B9%E5%A8%B1%E4%B9%90%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F-19869481847
www.iyiou.com/search?p=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
www.huoxing24.com/search/%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E8%B4%9F%E8%B4%A3%E4%BA%BA-19869481847
www.iyiou.com/search?p=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847
www.huoxing24.com/search/%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
https://www.douban.com/search?q=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BB%8F%E7%90%86-19869481847
https://www.douban.com/search?q=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E4%B8%8A%E4%B8%8B%E5%88%86-19869481847
https://www.ixigua.com/search/%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BD%91%E7%AB%99-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.ixigua.com/search/%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E7%BD%91%E7%AB%99-19869481847/?logTag=594535e3690f17a88cdb&tab_name=search
https://www.migu.cn/search.html?content=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847&type=allLobby&_ch=
https://www.migu.cn/search.html?content=%E9%94%A6%E5%88%A9%E5%A8%B1%E4%B9%90%E4%BC%9A%E5%91%98%E6%B3%A8%E5%86%8C-19869481847&type=allLobby&_ch=
https://so.youku.com/search_video/q_%E6%96%B0%E4%B8%96%E7%95%8C%E5%AE%A2%E6%9C%8D-19869481847?searchfrom=1
https://so.youku.com/search_video/q_%E6%96%B0%E4%B8%96%E7%95%8C%E5%AE%A2%E6%9C%8D-19869481847?searchfrom=1
https://www.xinpianchang.com/search?kw=%E6%96%B0%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://www.xinpianchang.com/search?kw=%E6%96%B0%E4%B8%96%E7%95%8C%E6%B8%B8%E6%88%8F%E4%B8%8B%E8%BD%BD%E9%93%BE%E6%8E%A5-19869481847
https://search.jd.com/Search?keyword=%E6%96%B0%E4%B8%96%E7%95%8C%E5%AE%98%E7%BD%91-19869481847&enc=utf-8&pvid=5512fd7b531e458abf0a7cd60bf38f31
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.iyiou.com/search?p=%E6%96%B0%E4%B8%96%E7%95%8C%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
www.huoxing24.com/search/%E6%96%B0%E4%B8%96%E7%95%8C%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E7%9A%87%E5%AE%B6%E5%9B%BD%E9%99%85%E7%BD%91%E7%AB%99-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E5%AE%A2%E6%9C%8D-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E5%AE%98%E7%BD%91-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%B3%A8%E5%86%8C%E7%BD%91%E5%9D%80-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90%E6%80%8E%E4%B9%88%E8%81%94%E7%B3%BB-19869481847
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E9%91%AB%E4%BD%B0%E5%88%A9%E5%A8%B1%E4%B9%90app%E4%B8%8B%E8%BD%BD-19869481847
http://www.hnxxrsj.gov.cn/Err

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值