完成如下任务。程序一,用上述基本方法,实现如下要求,在 main 函数中,对线性表操 作时,只能使用 b)中定义的函数,不可以直接对线性表进行操作: 1)初始化线性表
2)从键盘依次读入 10 个字符并保存到线性表中; 3)将线性表的第 6 个存储位置的数据元素删除; 4)将线性表的第 4 个存储位置之前插入一个数据元素,其值为字符 # ; 5)将线性表的所有所有数据元素打印输出; 6)将线性表销毁。
程序二,修改上述链式存储的线性表的数据元素类型定义和基本操作函 数实现,将线性表修改为一个学生信息表,每个数据元素至少需要包含:
姓名、学号、年龄,实现如下要求:
- 初始化线性表
- 实现一个线性表的插入函数,从键盘输入至少 5 名同学的信息并加 入到线性表中,要求选择时间复杂度为 O(1)的算法来实现。(注:输 入学生信息时,可以先要求输入学生信息数量;再依次输入每个学 生信息。)
- 实现一个打印输出函数,在全部同学的信息从键盘输入完毕后,将
线性表中的同学信息按输入顺序在屏幕打印输出。 - 使用 ListDelete 函数将存储了第二个输入的学生信息的结点删除
- 实现一个结点删除函数,将线性表中年龄超过某个年龄值(从键盘
输入一个年龄)的所有节点都删除; - 按输入顺序打印输出剩余结点。
- 销毁这个线性表。
一二为两个不同程序,代码如有错误请进行修改
#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);
}
}