| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2051 人关注过本帖
标题:顺序表出现的错误
只看楼主 加入收藏
请回复初学者
Rank: 1
来 自:开封
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
顺序表出现的错误
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 30
struct SqList{
char datas[MAXSIZE];
int length;
};
typedef struct SqList SqList;//建立顺序表L
void InitList(SqList *L);
void DestoryList(SqList *L);
void ClearList(SqList*L) ;
void ListEmpty(SqList*L);
void GetElem(SqList*L);
int LocateElem_Sq(SqList*L,char x);
void PriorELem(SqList*L,int i);
void NextElem(SqList*L,int i);
void ListInsert_Sq(SqList*L,int i,char e);
void ListDelete_Sq(SqList*L,int i);
void ShowList(SqList*L);
void main(){
SqList *L;
int k,i;
char x;//初始化顺序表
L=(SqList *)malloc(sizeof(SqList));
L->length=0;//空表长度为0
printf("请选择你要进行的操作:\n");
printf("1:初始化一个线性表");
printf("2:销毁线性表");
printf("3:清空线性表");
printf("4:判断线性表是否为空");
printf("5:求线性表的长度");
printf("6:获取线性表指定位置元素");
printf("7:求前驱");
printf("8:求后继");
printf("9:在线性表指定位置插入元素");
printf("10:删除线性表指定位置元素");
printf("11:显示线性表");
printf("12:退出\n");
scanf("%d",&k);
while(k<1||k>12){
printf("您只能选择1~12,请重新输入");
scanf("%d",&k);
}
while(k>=1&&k<=12){
switch(k){
case 1:InitList(L);
break;
case 2:DestoryList(L);
break;
case 3:ClearList(L);
break;
case 4:ListEmpty(L);
break;
case 5:printf("顺序表的长度为:%d\n",GetElem(L));
break;
case 6:printf("请输入待查找的元素x:");
fflush(stdin);
scanf("%c",&x);
printf("%d在顺序表中的位序为:%d\n",x,LocateElem_Sq(L,x));
break;
case 7:PriorELem(L,i);
break;
case 8:NextElem(L,i);
break;
case 9:printf("请输入带插入的元素的位置及元素的值x:");
scanf("%d",&i);
fflush(stdin);
scanf("%c",&x);
ListInsert_Sq(L,i,x);
break;
case 10:printf("请输入待删的元素的位置i:");
scanf("%d",&i);
ListDelete_Sq(L,i);
break;
case 11:printf("显示线性表:",ShowList(L));
break;
case 12:exit(0);
defult:printf("您只能选择1~12,请重新输入:");
}
printf("***********************************\n");
printf("请选择你要进行的操作:\n");
printf("1:初始化一个线性表");
printf("2:销毁线性表");
printf("3:清空线性表");
printf("4:判断线性表是否为空");
printf("5:求线性表的长度");
printf("6:获取线性表指定位置元素");
printf("7:求前驱");
printf("8:求后继");
printf("9:在线性表指定位置插入元素");
printf("10:删除线性表指定位置元素");
printf("11:显示线性表");
printf("12:退出\n");
scanf("%d",&k);
}
}
void InitList(SqList *L){
char x;int j;//按要求建立顺序表
printf("按要求输入顺序表初始时的元素,以#结束:\n");
fflush(stdin);
scanf("%c",&x);
j=0;
while(x!='#'){
L->datas[j]=x;
L->length++;
j++;
fflush(stdin);
scanf("%c",&x);
}
}
//销毁顺序表
void DestoryList(SqList *L)
{
if (L->datas!=NULL) free(L->datas); //释放线性表占据的所有存储空间
}
//清空线性表
void ClearList(SqList*L)
{
L->length=0; //将线性表的长度置为0
}
//判断线性表是否为空
void ListEmpty(SqList*L){
if(L->length=0){
printf("true");
}
else{
printf("false");
}
}
//求线性表的长度
int GetElem(SqList*L){
return L->length;
}
//获取线性表指定位置元素
int LocateElem_Sq(SqList*L,char x){
//在顺序线性表中查找第一个与x相等的元素,若找到,则返回其在L中的位序,否则返回0
int k;
k=1;//k的初值为第一个元素的位序
while(k<=L->length&&L->datas[k-1]!=x){
k++;
if(k<=L->length){
return k;
}
else{
return 0;
}
}
}
//求前驱
void PriorELem(SqList*L,int i){
int *j;
if(i<1||i>L->length){
printf("输入有误");
}
else if(i==1){
printf("无前驱");
}
else{
j=L->datas+i-2;
printf("%d",*j);
}
}
//求后继
void NextElem(SqList*L,int i){
int *j;
if(i<1||i>L->length){
printf("输入有误");
}
else if(i==L->length){
printf("无后继");
}
else{
j=L->datas+i;
printf("%d",*j);
}
}
//在线性表指定位置插入元素
void ListInsert_Sq(SqList*L,int i,char e){
int j;
if((i<1)||(i>L->length+1))
printf("ERROR");
for(j=L->length;j>i-1;j--) {
L->datas[j]=L->datas[j-1];
L->datas[i-1]=e;
L->length++;
}
}
//删除线性表指定位置元素
void ListDelete_Sq(SqList*L,int i){
int k;
if(i<1||i>L->length)//出错处理
printf("error");
else{
for(k=i;k<L->length;k++)//将第i+1个元素逐一前移一个位置
L->datas[k-1]=L->datas[k];
L->length=L->length-1;
}
}
//显示顺序表
void ShowList(SqList*L){
int i;
printf("顺序表当前值为:\n");
for(i=0;i<L->length;i++)
printf("%c",L->datas[i]);
printf("\n");
}
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(54) : error C2664: 'printf' : cannot convert parameter 2 from 'void' to '...'
Expressions of type void cannot be converted to other types
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(75) : error C2664: 'printf' : cannot convert parameter 2 from 'void' to '...'
Expressions of type void cannot be converted to other types
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(131) : error C2556: 'int __cdecl GetElem(struct SqList *)' : overloaded function differs only by return type from 'void __cdecl GetElem(struct SqList *)'
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(13) : see declaration of 'GetElem'
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(131) : error C2371: 'GetElem' : redefinition; different basic types
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(13) : see declaration of 'GetElem'
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(159) : error C2440: '=' : cannot convert from 'char *' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\11.cpp(173) : error C2440: '=' : cannot convert from 'char *' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.


11.obj - 6 error(s), 0 warning(s)
搜索更多相关主题的帖子: include 
2015-10-12 09:44
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
先解决错误吧,剩下的逻辑问题你自己再找找看.

ps:注意代码排版,至少缩格啊

程序代码:
##diff test.c test.c.bak 
13c13
< int GetElem(SqList*L);
---
> void GetElem(SqList*L);
75c75
< case 11:printf("显示线性表:\n");ShowList(L);
---
> case 11:printf("显示线性表:",ShowList(L));


[fly]存在即是合理[/fly]
2015-10-12 10:01
请回复初学者
Rank: 1
来 自:开封
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-12
收藏
得分:0 
嗯嗯
2015-10-12 11:13
快速回复:顺序表出现的错误
数据加载中...
 
   



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

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