C编写顺序表的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 14:21:30
实现顺序表插入、删除、初始化的基本操作。编写函数要求输出学号,年龄,出生年份,出生月份,出生日期等六个信息。
这是我写的……组建没有错误……但运行出错……不明白

#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>

#define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量
#define LISTINCREMENT 10 // 线性表存储空间的分配增量
typedef struct {
int *elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量(元素数)
} Sqlist;

int InitList_Sq(Sqlist &L)
{

L.elem=(int*)malloc(100*sizeof(int));
if (!L.elem)
exit(-2); // 存储分配失败
L.length=0; // 空表长度为0
L.listsize=100; // 初始存储容量
return 1;
} // InitList_Sq

int ListInsert_Sq(Sqlist &L, int i,int e)
{
int *p,*q;
int *newbase;
if (i<1||i>L.length+1)
return 0;
if (L.length >= L.listsize)
{
newbase=(int *)realloc(L.elem,(L.listsize+10)*sizeof(int)) ;
if (!newbase)

C,C++混用不好,建议你用C++的类,实现的数据结构更好用。

Sqlist la; la.elem = new int[6]; // elem 没有初始化
最后要释放内存 delete[] la.elem;


int a[]={2008,179,19,1989,11,14},i;
for (i=0;i<6;i++)
la.elem[i]=a[i]; 这些给成

ListInsert_Sq (la,1,14);
ListInsert_Sq (la,1,11);
ListInsert_Sq (la,1,1989);
ListInsert_Sq (la,1,19);
ListInsert_Sq (la,1,179);
ListInsert_Sq (la,1,2008);

就好啦~~