c语言二级指针线性表,结构体二级指针线性表初始化,程序崩溃

使用结构体一级指针进行初始化,程序正常运行

PseqList PL1,PL2,*C;

PL1 = Init_SeqList();

PL2 = Init_SeqList();

但是再定义*C时,进行初始化运行时,出现程序停止,崩溃

屏蔽这段代码,就能够正常运行

*PL = Init_SeqList();

statu = Merge_SeqList(PL1,PL2,PL);

/**********************************************************、

** 文件: MergeSeqList.c

**问题描述:利用顺序存储实现线性表的功能

**          2、已有两个升序排列顺序表AB,融合新的顺序表C

**********************************************************/

#include 

#include 

#include 

#include 

#define MAXSIZE 100

typedef int  DataType;

/* 定义顺序表为一个结构体*/

typedef struct node{

int data[MAXSIZE];

DataType length;

}SeqList,*PseqList;

/********顺序表初始化***************

** 函数名; Init_SeqList

** 入口参数: 无

** 返回值; 指向顺序表的指针

** 作用:初始化顺序表

**

*************************************/

PseqList Init_SeqList(){

PseqList PL;

PL= (PseqList)malloc(sizeof(SeqList)); //也可以通过PL = &L实现

if(PL)

PL->length = 0;

return PL;

}

/********冒泡排序***************

** 函数名; Bubble_Sort

** 入口参数: 顺序表,数据个数

** 返回值;  空

** 作用:将顺序表排序

** 平均时间复杂度为 O(n^2);

*************************************/

void Bubble_Sort(PseqList PL, int n)

{

int i, j, temp;

for (j = 0; j 

for (i = 0; i 

{

if(PL->data[i] > PL->data[i + 1])

{

temp = PL->data[i];

PL->data[i] = PL->data[i + 1];

PL->data[i + 1] = temp;

}

}

}

/********AB融合为C排序****************

** 函数名; Merge_SeqList

** 入口参数: 顺序表A,顺序表B,

**           顺序表C的二级指针

** 返回值;  0 失败 ;1 成功

** 作用:AB融合为C排序

** 平均时间复杂度为 O(m+n); m为A的长度

n为B的长度

*************************************/

int Merge_SeqList(PseqList A, PseqList B,PseqList *C)

{

int i = 0,j = 0,k = 0;

if(!(*C)){

printf("C表示不存在");

return 0;

}

if( A->length + B->length >= MAXSIZE ){

printf("C表空间不足");

return 0;

}

printf("\nC表示不存在");

while(i length && j length){

if(A->data[i] data[j])

(*C)->data[k++] = A->data[i++];

else

(*C)->data[k++] = B->data[j++];

}

while(i length)

(*C)->data[k++] = A->data[i++];

while(i length)

(*C)->data[k++] = B->data[j++];

(*C)->length = k;

return 1;

}

/*******MAIN主函数***************

** 函数名; main

** 入口参数: 无

** 返回值; 1

** 作用:函数入口

**

*************************************/

int main(){

int i,statu;

PseqList PL1,PL2,*PL;

PL1 = Init_SeqList();

PL2 = Init_SeqList();

PL1->length = 9;

PL2->length = 12;

for(i=0; i length ; i++){

PL1->data[i] = rand()%100+1;;

}

printf("\n--\n");

Bubble_Sort(PL1,PL1->length);

for(i=0; i length; i++)

printf("%d\t",PL1->data[i] );

for(i=0; i length ; i++){

PL2->data[i] = rand()%100+1;;

}

printf("\n--\n");

Bubble_Sort(PL2,PL2->length);

for(i=0; i length; i++)

printf("%d\t",PL2->data[i] );

*PL = Init_SeqList();

statu = Merge_SeqList(PL1,PL2,PL);

getch();

return 0;

}

小白求指导,网上搜了一下;没找到相关的答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值