artais 2022-04-11 17:12 采纳率: 61.1%
浏览 157
已结题

数据结构,链表问题,如何将代码补充完整

完成如下任务。程序一,用上述基本方法,实现如下要求,在 main 函数中,对线性表操 作时,只能使用 b)中定义的函数,不可以直接对线性表进行操作: 1)初始化线性表
2)从键盘依次读入 10 个字符并保存到线性表中; 3)将线性表的第 6 个存储位置的数据元素删除; 4)将线性表的第 4 个存储位置之前插入一个数据元素,其值为字符 # ; 5)将线性表的所有所有数据元素打印输出; 6)将线性表销毁。
程序二,修改上述链式存储的线性表的数据元素类型定义和基本操作函 数实现,将线性表修改为一个学生信息表,每个数据元素至少需要包含:
姓名、学号、年龄,实现如下要求:

  1. 初始化线性表
  2. 实现一个线性表的插入函数,从键盘输入至少 5 名同学的信息并加 入到线性表中,要求选择时间复杂度为 O(1)的算法来实现。(注:输 入学生信息时,可以先要求输入学生信息数量;再依次输入每个学 生信息。)
  3. 实现一个打印输出函数,在全部同学的信息从键盘输入完毕后,将
    线性表中的同学信息按输入顺序在屏幕打印输出。
  4. 使用 ListDelete 函数将存储了第二个输入的学生信息的结点删除
  5. 实现一个结点删除函数,将线性表中年龄超过某个年龄值(从键盘
    输入一个年龄)的所有节点都删除;
  6. 按输入顺序打印输出剩余结点。
  7. 销毁这个线性表。
    一二为两个不同程序,代码如有错误请进行修改
    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 100
    typedef int ElemType;
    typedef struct LNode
    {
    ElemType data;

struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList& L);
bool DestroyList(LinkList& L);
int ListLength(LinkList L);
bool GetElem(LinkList L, int i, ElemType &e);
bool ListInsert(LinkList &L, int i, ElemType e);
bool ListDelete(LinkList &L, int i,ElemType e);
void ListPrint(LinkList L);
int main()
{

}

bool InitList(LinkList &L)
{
L=new LNode;
L->next=NULL;
return true;
}
bool DestroyList(LinkList& L)
{ if(!L) return 0;
LNode *p= L;
while (p) {
LNode * q= p->next;
free(p);
p=q;
}
L=NULL;
}
int ListLength(LinkList L)
{
if(!L) return 0;
int len=0;
LNode *p= L->next;
while (p) {
++len;
p= p->next;
}
return len;
}
bool GetElem(LinkList L, int i, ElemType &e)
{
if(!L) return 0;
LNode *p= L->next;
int j=1;
while ( p && j<i ) {
p= p->next; ++j;
}
if ( !p || j>i ) return 0;
e= p->data;
return true;
}
bool ListInsert(LinkList &L, int i, ElemType e)
{
if(!L) return 0;
LNode *p=L; int j=0;
while (p && j<i-1) {
p=p->next; j++;
}
if ( !p || j>i-1 ) return 0 ;
LNode * s = (LNode *)malloc(sizeof(LNode));
if(!s) return 0;
s->data= e ;

        s->next= p->next;    p->next= s;
    
        return true;
    
}

bool ListDelete(LinkList &L, int i,ElemType e)
{
if(!L) return 0;

    LNode *p = L;
    if(!p->next) 
        return 0;     
    LNode * q= p->next;
    p->next= q->next;
    e= q->data;    
    free(q);
    return true;

}
void ListPrint(LinkList L)
{
LNode *temp=L;
while(temp->next)
{temp=temp->next;
printf("%c",temp->data);
}
}

  • 写回答

1条回答 默认 最新

  • 非西昂 2022-04-12 09:34
    关注

    你这是想让改错还是补全还是重写?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 已采纳回答 4月12日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 envi深度学习模块错误原因
  • ¥15 孟德尔随机化混杂因素
  • ¥15 关于react-hook组件用函数控制是否渲染的及时性问题。
  • ¥50 Linux下的软件,要做模块化拆分。进程间通信是否有开源框架可以借用?
  • ¥100 修改原有的MYSQL存储代码,在最右边添加多列数据
  • ¥20 Open Interpreter 使用时报错: still has pending operation at deallocation, the process may crash
  • ¥15 qt中链接动态链接库,调用其中的函数,该函数的参数需要传入回调函数,自己创建的回调函数无法作为参数传递进去
  • ¥15 matlab svm二分类代码问题
  • ¥40 求一款能支持ios15以上的屏蔽越狱插件。比较好用的
  • ¥15 C++ QT对比内存字符(形式不定)