数据结构c语言版一道题求解

数据结构c语言版一道题求解。急。
要求:以下是顺序表的结构体定义及部分代码,请根据提示信息将代码补充完整,并编写主函数实现以下功能:已知两个非递减有序顺序表LA={1,1,3,3,4,6},LB={2,3,5,7,9},将LA和LB的数据合并到新表LC中,仍然保持非递减的顺序关系,并输出表LC的内容。

typedef int DataType;

struct SeqList
{ int MAXNUM; /*顺序表中最大元素的个数*/
int n; /* 存放线性表中元素的个数n≤MAXNUM */
DataType *element; /* element[0],element[1],…,element[n - 1]存放线性表中的元素 */
};

typedef structSeqList *PSeqList;

PSeqList createNullList_seq(intm ) {
/* 创建新的顺序表 */
PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList));
if (palist!=NULL){
palist->element= (DataType*)malloc(sizeof(DataType)*m);
if(palist->element){
palist->MAXNUM=m;
palist->n = 0; /*空表长度为0 */
return (palist);
}
else free (palist);
}
printf(“Outof space!!\n”); /* 存储分配失败*/
return NULL;
}

int isNullList_seq( PSeqList palist ) {
/*判别palist所指顺序表是否为空表。*/

}

int locate_seq( PSeqList palist, DataType x ) {
/* 求x在palist所指顺序表中的下标*/

}

int insertPre_seq( PSeqListpalist, int p, DataType x )
/* 在palist所指顺序表中下标为p的元素之前插入元素x*/
{

}

int deleteP_seq( PSeqList palist, int p )
/* 在palist所指顺序表中删除下标为p的元素*/
{

}

完整代码:

#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
 
struct SeqList
{  int   MAXNUM;       /* 顺序表中最大元素的个数*/
   int        n;      /* 存放线性表中元素的个数n≤MAXNUM  */
   DataType *element; /* element[0],element[1],…,element[n - 1]存放线性表中的元素 */
};
 
typedef  struct SeqList   *PSeqList;

PSeqList createNullList_seq(int m ) {
/* 创建新的顺序表 */
    PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList));
     if (palist!=NULL){
     palist->element= (DataType*)malloc(sizeof(DataType)*m);
       if(palist->element){
       palist->MAXNUM=m;
       palist->n = 0;                                 /*空表长度为0 */
       return (palist);
      }
   else free (palist);
    }
    printf("Outof space!!\n");      /* 存储分配失败*/
    return NULL;
}

int  isNullList_seq( PSeqList palist ) {
/*判别palist所指顺序表是否为空表。*/
if((palist == NULL) || (palist->n == 0)) {
return 1;
}
return 0;
}

int  locate_seq( PSeqList palist, DataType x ) {
/* 求x在palist所指顺序表中的下标*/
int i, ret = -1;
if(palist == NULL) return ret;
ret = palist->n;
for(i=0; i<palist->n; ++i) {
if(palist->element[i] >= x) {
ret = i;
break;
}
}
return ret;
}

int insertPre_seq(PSeqList palist, int p, DataType x)
/* 在palist所指顺序表中下标为p的元素之前插入元素x*/
{
int i,ret = -1;
if(palist == NULL || palist->n >= palist->MAXNUM) return ret;
if(p>=palist->n) {
palist->element[palist->n] = x;
ret = palist->n;
++palist->n;
}
else {
for(i=palist->n; i>p; --i) {
palist->element[i] = palist->element[i-1];
}
palist->element[i] = x;
ret = i;
++palist->n;
}
return ret;
}

int  deleteP_seq( PSeqList palist, int p )
/* 在palist所指顺序表中删除下标为p的元素*/
{
int i;
if(isNullList_seq(palist) || p>=palist->n) return -1;
for(i=p-1; i<palist->n-1; ++i) {
palist->element[i] = palist->element[i+1];
}
--palist->n;
return 1;
}

void print(PSeqList palist) {
int i;
if(isNullList_seq(palist)) return;
for(i = 0; i<palist->n; ++i) {
printf("%d\t", palist->element[i]);
}
if(palist->n > 0)  printf("\n");
}
/*
LA={1,1,3,3,4,6},LB={2,3,5,7,9},
*/

int main() {
int i;
PSeqList LA, LB,LC;
int a[]={1,1,3,3,4,6}, b[] = {2,3,5,7,9};
LA = createNullList_seq(6);
LB = createNullList_seq(5);
for(i=0;i<6;++i) {
insertPre_seq(LA, i, a[i]);
}
print(LA);
for(i=0;i<5;++i) {
insertPre_seq(LB, i, b[i]);
}
print(LB);
LC = createNullList_seq(LA->MAXNUM + LB->MAXNUM);
for(i=0;i<LA->n;++i) {
insertPre_seq(LC, i, LA->element[i]);
}
for(i=0;i<LB->n;++i) {
int p = locate_seq(LC, LB->element[i]);
insertPre_seq(LC, p, LB->element[i]);
}
print(LC);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-28
正在学,做是做出来的,不过不在这个电脑里存着。不然就复制给你了。追问

......要下课了。。。。做不出来。。。。

第2个回答  2013-09-28
struct SeqList
{ int MAXNUM; /*顺序表中最大元素的个数*/
int n; /* 存放线性表中元素的个数n≤MAXNUM */
DataType *element; /* element[0],element[1],…,element[n - 1]存放线性表中的元素 */
};

typedef struct SeqList *PSeqList;

PSeqList createNullList_seq(int m ) {
/* 创建新的顺序表 */
PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList));
if (palist!=NULL){
palist->element= (DataType*)malloc(sizeof(DataType)*m);
if(palist->element){
palist->MAXNUM=m;
palist->n = 0; /*空表长度为0 */
return (palist);
}
else free(palist);
}
printf(“Out of space!!\n”); /* 存储分配失败*/
return NULL;
}

int isNullList_seq( PSeqList palist ) {
/*判别palist所指顺序表是否为空表。*/
return palist->n==0?1:0;
}

int locate_seq( PSeqList palist, DataType x ) {
/* 求x在palist所指顺序表中的下标*/
for(int i=0;i<n;i++)
{
if(palist->element[i]==x){
return i;
}
}
return -1;
}

int insertPre_seq( PSeqListpalist, int p, DataType x )
/* 在palist所指顺序表中下标为p的元素之前插入元素x*/
{
for(int i=n-1;i>q;i--)
{
palist->element[i+1]=palist->element[i];
}
palist->element[q]=x;
return 1;
}

int deleteP_seq( PSeqList palist, int p )
/* 在palist所指顺序表中删除下标为p的元素*/
{
for(int i=q;i<n;i++)
{
palist->element[i]=palist->element[i+1];
}
return 1;
}

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

一份C语言的数据结构题目,急求答案
{top--;p=NULL;} else if(top>0){s[top].tag=1;p=s[top].pp;p=p->rchild;} } }

数据结构c语言版一道题求解
,element[n - 1]存放线性表中的元素 *\/}; typedef struct SeqList *PSeqList;PSeqList createNullList_seq(int m ) {\/* 创建新的顺序表 *\/ PSeqList palist= (PSeqList)malloc(sizeof(struct SeqList)); if (palist!=NULL){ palist->element= (DataType*)malloc(sizeo...

求教一题数据结构(C语言),第5题
1+2+3+4+5+5=20 所以两者之差为19

c语言数据结构问题求解
A[0][0]和A[2][2]相差了(2*n+2)个元素,与A[3][3]相差了(3*n+3)个元素,所以,676-644=32,32\/2*3=48,644+48=692,选择c项。满意请采纳呦~

一道C语言里的数据结构问题
这个是计算n趋于无穷大时的阶次,因此阶次从低到高的次序为:31+1\/n , 100n + nlog2(n), 20log2(2^n) + n^2, 2^n + 89n^3

数据结构——C语言:求解题目:为字符串定义一个ADT,要求包含常见的字符...
数据关系:R1={ <ai-1 , ai> | , ai-1,ai∈D, i=2,...,n } 基本操作:StrAssign (&T, chars)初始条件:chars 是串常量。操作结果:赋于串T的值为 chars。StrCopy (&T, S)初始条件:串 S 存在。操作结果:由串 S 复制得串 T。DestroyString (&S)初始条件:串 S 存在。操作...

C语言数据结构的一个基本问题
1 int read_2D_Array(int **array, int i, int j, int column)2 { \/\/i row j column ,总行数为column 3 return((*(int*)array + i*column + j));4 } 以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 ...

数据结构的习题(C语言版)
第一个问题,分析下要求,可以知道要做的事情是合并两个数组到一个数组里去,数组C的长度是AB之和。表C的第一个字符不是A的第一个字符就是B的第一个字符。因此接下来要做的事情就是做一个长度为AB之和的循环,每一次找出A或B中的最小元素,存到C里面去,循环结束,C就自动有了。第二个问题...

求解数据结构c语言中串的问题
在C语言中处理字符串操作时,理解基础函数的用法至关重要。举例来说,如果字符串s1和m之间仅由一个'号分隔,而无空格存在,字符串长度则应为13。函数SubString(s1,8,5)的作用是从字符串s1的第8个字符开始,提取连续的5个字符,结果为"tuden"。函数index(s1,'u')则在字符串s1中搜索字符'u',若...

相似回答