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

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

完成如下任务。程序一,用上述基本方法,实现如下要求,在 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 Qt4代码实现下面的界面
  • ¥15 prism提示我reinstall prism 如何解决
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码