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