rsZheng4916 2021-11-10 22:03 采纳率: 60%
浏览 29
已结题

数据结构单链表【没有与这些操作数匹配的 "!=" 运算符】


#include<stdio.h>
#include<stdlib.h>

/**
 * 线性表
 * 单链表的基本操作与实现
 */
// 函数结果状态码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
// Status是函数的类型,其值是函数结果状态码
typedef int Status;

typedef struct{
    char num[8];    // 数据域
    char name[8];   // 数据域
    int score;      // 数据域
} ElemType;
// 声明结点的类型和指向结点的指针类型
typedef struct LNode{
    ElemType data;      // 数据域
    struct LNode *next; // 指针域
} LNode,*LinkList;      // LinkList是指向结构体LNode的指针类型

/**
 * 单链表的初始化
 */
Status InitList_L(LinkList &L){
    L = (LinkList)malloc(sizeof(LNode));    // 或L = new LNode
    L->next = NULL;
    return OK;
}

/**
 * 单链表判空
 */
int ListEmpty(LinkList L){
    if(L->next) return 0;
    else return 1;
}
/**
 * 单链表的销毁
 */
Status DestroyLsit_L(LinkList &L){
    LinkList p;     // 或LNode *p
    while(L != NULL){
        p = L;
        L = L->next;
        free(p);    // 或delete p
    }
    return OK;
}

/**
 * 清空链表
 */
Status ClearList(LinkList &L){
    // 或LNode *p,*q;
    LinkList p,q;   // p存放当前要删除的结点,q存放p的下一个结点
    p = L->next;    // p指向首元结点
    while(p){
        q = p->next;// q指向p指向的下一结点
        free(p);    // 或delete p,删除p当前指向的结点
        p = q;
    }
    L->next = NULL; // 头结点的指针域为空
    return OK;
}

/**
 * 求单链表的表长
 */
int ListLength_t(LinkList L){
    LinkList p;
    p = L->next;    // p指向首元结点
    int i = 0;

    while(p){
        i++;
        p = p->next;// 指向p指向的下一结点
    }
    return i;
}

/**
 * 取值——取链表的第i个元素值
 */
Status GetElem_L(LinkList L,int i,ElemType &e){
    LinkList p;
    p = L->next;
    int j = 1;  // 计数器
    while(p != NULL && j < i){
        // 向后扫描,直到p指向第i个元素或p为空
        p = p->next;
        ++j;
    }
    // 第i个元素不存在
    if(!p || j > i) return ERROR;
    // 取第i个元素赋值到e
    e = p->data;
    return OK;
}

/**
 * 按值查找
 * 根据指定数据获取该数据所在的位置(该数据的地址)
 */
LNode *LocateElem_L(LinkList L,ElemType e){
    // 结果:找到——返回L中值为e的数据元素的地址;失败——返回NULL
    LinkList p = L->next;
    while (p != NULL && p->data != e)
        p = p->next;
    return p;
}


```c
/**
 * 按值查找
 * 根据指定数据获取该数据所在的位置序号(是第几个数据元素)
 */
int LocateElem_List(LinkList L,ElemType e){
    // 结果:找到——返回L中值为e的位置序号;失败——返回0
    LinkList p;
    p = L->next;
    int i = 1;  // 计数器
    while (p != NULL && p->data != e){
        p = p->next;
        i++;
    }
    if(p) return i;
    else return 0;
}

img

哪位懂的兄弟可以帮我给下方法嘛?一直没解决。

  • 写回答

1条回答 默认 最新

  • rsZheng4916 2021-11-10 22:03
    关注

    求懂哥解答,小弟我好久解答不出。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 创建了问题 11月10日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗