:用C语言定义一个可扩展的顺序表结构,并实现初始化、求表长、插入、删除、查找操作。 40

 我来答
kaixingui2012
2012-03-24 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6894万
展开全部
刚帮人调了一个程序,借花献佛,希望对你有帮助!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxsize 1024
typedef char datatype;
typedef struct
{
datatype data[maxsize];
int last;
}sequenlist;

//在线性表L中第i个位置上插入元素e。
int ListInsert(sequenlist *L, int i, datatype e)
{
int j;
if( i < 1 || i > L -> last || L -> last >= maxsize )
return 0;
for ( j=L->last+1; j >=i; j-- )
L->data[j] =L->data[j-1];
L->data[i-1] = e;
L->last++;
return 1;
}

void DispList(sequenlist *L) //输出线性表L。
{
int j;
for(j=0; j<L->last; j++)
{
printf("%c",L->data[j]);
}
printf("\n"); //最后加个换行
}

int ListLength(sequenlist *L) //返回线性表L的长度。
{
return L->last;
}

int ListEmpty(sequenlist *L) //判断线性表L是否为空表。
{
if(L->last ==0 )
{
printf("线性表为空\n");
return 1; //为空,返回真值!
}
printf("线性表不为空\n");
return 0;
}

char GetElem(sequenlist *L, int i) //返回线性表L的第i个元素
{

if ( i > 0 && i <= L->last)
return L->data[i-1];
printf ( "参数 i:%d 不合理!\n" , i );
return 0;
}

//在线性表L查找元素e,若存在,则返回第一个e在线性表中的们置,若不存在,则返回0。
int LocateElem(sequenlist *L, datatype e)
{
int i = 0;
while ( i<L->last && L->data[i] != e )
i++;
if ( i < L->last )
return i+1;
else
return 0;
}

int ListDelete(sequenlist *L, int i) //在线性表L中删除第i个元素。
{
int j;
if ( i<1 || i> L->last)
{
printf ("error");
return 0;
}
for ( j = i; j <= (*L).last; j++ )
L->data[j-1] = L->data[j];
L->last --;
return 1;
}

void InitList(sequenlist *L) //初始化。
{
memset( L->data , 0 , sizeof(L->data) );
L->last = 0;
}

int main()
{
sequenlist *L=NULL;
char ch = 'a';
int k ;

//L指针在没有指定有效地址空间时,是不能直接使用的!不然它指向的是NULL不能操作
L=(sequenlist *)malloc( sizeof(sequenlist) ); //为指针分配一个有效的空间才可以用哦

InitList(L);
printf("插入a-j\n");
for(k = 0;k < 10 ; k++)
{
L->data[k] = ch;
ch ++;
L->last++ ;
}

printf("继续插入A B C D E\n");
ch = 'A';
for( k = 10; k <= 15 ; k ++)
{
L ->data[k] = ch;
ch ++;
L->last++ ;
}

DispList(L);

ListEmpty(L);

GetElem(L, 3);
LocateElem(L, 'A');
ListInsert(L, 4, 'X');
DispList(L);
ListDelete(L, 3);
DispList(L);

free(L);
return 0;
}
wuhongshu
2012-03-29 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:22.2万
展开全部
哈哈,这个用C定义不了,改用C++吧,做个类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mzkan_com插LG
2012-03-22
知道答主
回答量:24
采纳率:0%
帮助的人:6.6万
展开全部
DFGEW
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式