哪位大神可以帮忙解答一下谢谢
三、程序填空题1.已知线性表的存储结构为顺序表,数据元素为整型。以下算法的功能是删除线性表中所有值为负数的元素,请填空。typedefintElemType;typede...
三、程序填空题
1. 已知线性表的存储结构为顺序表,数据元素为整型。以下算法的功能是删除线性表中所有值为负数的元素,请填空。
typedef int ElemType;
typedef struct
{ ElemType *data; /* 存储空间基地址 */
int length; /* 顺序表长度(即已存入的元素个数) */
int listsize; /* 当前存储空间容量(即能存入的元素个数) */
}sqlist;
void fun(sqlist *L)
{ int i,j;
for(i=j=0; ① ;i++)
if(L->data[i]>=0)
{ if(i!=j) ② ;
③ ;
}
L->length=j;
}
2.以下是在顺序表L中的第i个位序上插入一个值为x的数据元素的操作,请填空。
typedef int ElemType; /* 在实际问题中,根据需要定义所需的数据类型 */
typedef struct
{ ElemType *data; /* 存储空间基地址 */
int length; /* 顺序表长度(即已存入的元素个数) */
int listsize; /* 当前存储空间容量(即能存入的元素个数) */
}sqlist;
int insert(sqlist *L,int i,ElemType x)
{ int j;
if( ① ) return 0;
if(L->length==L->listsize)
{
L->data=(ElemType *)realloc(L->data,
(L->listsize+1)*sizeof(ElemType));
L->listsize++;
}
for(j=L->length-1;j>=i-1;j--)
② ;
L->data[i-1]=x;
③ ;
return 1;
}
3.下面程序是将带头结点的单向循环链表逆置的算法,请填空。
typedef int ElemType;
typedef struct node
{ ElemType data;
struct node *next;
} slink;
void turn(slink *L)
{ slink *p,*q;
p=L->next;
L->next= L;
while( ① )
{ q=p;
p=p->next;
q->next= ② ;
L->next= ③ ;
}
}
4. 下列函数的功能是实现带头结点的单链表逆置,请填空。
typedef int ElemType;
typedef struct node
{ ElemType data; /* 数据域 */
struct node *next; /* 指针域 */
}slink;
void turn( ① L)
{ slink *p,*q;
p=L->next;
L->next=NULL;
while( ② )
{ q=p;
p=p->next;
q->next=L->next;
L->next= ③ ;
}
}
5.线性表的链式存储结构定义如下,写出在带头结点的单向链表L中删除第i个结点的算法。
#include "stdio.h"
/* 结点类型 */
#define ElemType int
typedef struct node
{ ElemType data;
struct node *next;
} slink; 展开
1. 已知线性表的存储结构为顺序表,数据元素为整型。以下算法的功能是删除线性表中所有值为负数的元素,请填空。
typedef int ElemType;
typedef struct
{ ElemType *data; /* 存储空间基地址 */
int length; /* 顺序表长度(即已存入的元素个数) */
int listsize; /* 当前存储空间容量(即能存入的元素个数) */
}sqlist;
void fun(sqlist *L)
{ int i,j;
for(i=j=0; ① ;i++)
if(L->data[i]>=0)
{ if(i!=j) ② ;
③ ;
}
L->length=j;
}
2.以下是在顺序表L中的第i个位序上插入一个值为x的数据元素的操作,请填空。
typedef int ElemType; /* 在实际问题中,根据需要定义所需的数据类型 */
typedef struct
{ ElemType *data; /* 存储空间基地址 */
int length; /* 顺序表长度(即已存入的元素个数) */
int listsize; /* 当前存储空间容量(即能存入的元素个数) */
}sqlist;
int insert(sqlist *L,int i,ElemType x)
{ int j;
if( ① ) return 0;
if(L->length==L->listsize)
{
L->data=(ElemType *)realloc(L->data,
(L->listsize+1)*sizeof(ElemType));
L->listsize++;
}
for(j=L->length-1;j>=i-1;j--)
② ;
L->data[i-1]=x;
③ ;
return 1;
}
3.下面程序是将带头结点的单向循环链表逆置的算法,请填空。
typedef int ElemType;
typedef struct node
{ ElemType data;
struct node *next;
} slink;
void turn(slink *L)
{ slink *p,*q;
p=L->next;
L->next= L;
while( ① )
{ q=p;
p=p->next;
q->next= ② ;
L->next= ③ ;
}
}
4. 下列函数的功能是实现带头结点的单链表逆置,请填空。
typedef int ElemType;
typedef struct node
{ ElemType data; /* 数据域 */
struct node *next; /* 指针域 */
}slink;
void turn( ① L)
{ slink *p,*q;
p=L->next;
L->next=NULL;
while( ② )
{ q=p;
p=p->next;
q->next=L->next;
L->next= ③ ;
}
}
5.线性表的链式存储结构定义如下,写出在带头结点的单向链表L中删除第i个结点的算法。
#include "stdio.h"
/* 结点类型 */
#define ElemType int
typedef struct node
{ ElemType data;
struct node *next;
} slink; 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询