| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:如何在C++6.0实现线性表
只看楼主 加入收藏
shouzhuhuan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-25
收藏
 问题点数:0 回复次数:1 
如何在C++6.0实现线性表


这个程序在C++中怎么样才能够实现啊 ,我实现不出来

#include<stdio.h>


#include<stdlib.h>
#include<conio.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100 //线形表存储空间的初始分配量
#define LISTINCREMENT 10 //线形表存储空间的分配增量

typedef struct {
ElemType *elem;//存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}SqList;


Status InitList_Sq(SqList &L){ //构造一个空的线性表L
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW); //分配存储空间失败
L.length=0; //空表长度为0
L.listsize=LIST_INIT_SIZE; //初始存储容量
return OK;}

Status ListInsert_Sq(SqList &L,int i,ElemType e)
{ //在线性表L中第i个位置之前插入新元素e,i的合法值为为1<=i<=L.length+1
if(i<1||i>L.length+1) return ERROR; //i 值不合法
if(L.length>=L.listsize){ //当前存储空间已满,增加分配
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OWERFLOW); //存储空间分配失败
L.elem=newbase; //新基址
L.listsize+=LISTINCREMENT; //增加存储容量
}
q=&(L.elem[i-1]; //q为插入位置
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;//插入位置及之后的元素右移
*q=e; //插入e
++L.length;//表长增1
return OK;
}// ListInsert_Sq

void main()
{ int n,i, j=0;int w;
SqList L;
printf("input the number of the elem")
scanf("(n<100)n= %d",n\n);
while(i<n)
{scanf("%d",L.elem[j]\n);
printf("input the insert elem w before i)
scanf("i= %d",i\n);
scanf("w= %d",w\n);
ListInsert_Sq(L,i,w);
for(i=0;i<n+1;i++)
printf("%4d",L.elem[i]);
putchar('\n');
}

搜索更多相关主题的帖子: 线性 
2006-01-25 13:45
shouzhuhuan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-25
收藏
得分:0 




//这样就能实现插入了
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100 //线形表存储空间的初始分配量
#define LISTINCREMENT 10 //线形表存储空间的分配增量
typedef int ElemType;
typedef struct {
ElemType *elem;//存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}SqList;


InitList_Sq(SqList &L){ //构造一个空的线性表L
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW); //分配存储空间失败
L.length=0; //空表长度为0
L.listsize=LIST_INIT_SIZE; //初始存储容量
return OK;}

ListInsert_Sq(SqList &L,int i,ElemType e)
{ int *newbase; int *p,*q; //在线性表L中第i个位置之前插入新元素e,i的合法值为为1<=i<=L.length+1
if(i<1||i>L.length+1) return ERROR; //i 值不合法
if(L.length>=L.listsize){ //当前存储空间已满,增加分配
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW); //存储空间分配失败
L.elem=newbase; //新基址
L.listsize+=LISTINCREMENT; //增加存储容量
}
q=&(L.elem[i-1]); //q为插入位置
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;//插入位置及之后的元素右移
*q=e; //插入e
++L.length;//表长增1
return OK;
}// ListInsert_Sq

void main()
{ int n=6;int i;int a;
SqList L;
InitList_Sq(L);
for(i=1;i<=n;i++)
ListInsert_Sq(L,1,i);//1 2 3 4 5 6
for(i=0;i<n;i++)
printf("%4d",L.elem[i]);//6 5 4 3 2 1
printf("\nthere are six elems here,now insert an elem 88 before the 3th elem\n");

ListInsert_Sq(L,3,88);
for(i=0;i<n+1;i++)
printf("%4d",L.elem[i]);//6 5 88 4 3 2 1
putchar('\n');
}

2006-01-28 13:49
快速回复:如何在C++6.0实现线性表
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023421 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved