我的一次for循环 输出两次是怎么回事啊!

zhangbencheng 2012-05-23 11:51:00
这是代码:

/*[测试数据] 输入n 为 10 (形成10个结点的表)
输入10个字符,如:A,B,C,D,E,F,G,H,I,J
选择I,输入G,10 程序运行的结果是什么?
选择I,输入G,14 程序运行的结果是什么?
选择I,输入M,4 程序运行的结果是什么?
选择D,输入6 程序运行的结果是什么?
选择D,输入20 程序运行的结果是什么?
请将测试后的结果写出来,分析结果正确与否,提出改进意见*/


#include <stdio.h>
#include<conio.h>
#define maxsize 1000
typedef char datatype ;


typedef struct
{
datatype data[maxsize] ; /*定义线性表为一个向量*/
int last;
} sequenlist ;
/* 插入函数*/
int insert(sequenlist *L,char x,int i)
/*将新结点X插入到表L的第I个位置*/
/*L为指向线性表sequenlist类型的指针变量*/
{
int j ;
if ((*L).last== maxsize-1)
{
printf("overflow\n") ;
return 0;
}
else if ((i<1 ) || (i>(*L).last+1))
{
printf("error\n") ; /* 非法位置*/
return 0 ;
}
else
{
for(j=(*L).last ;j>=i-1 ; j--)
(*L).data[j+1]= (*L).data[j] ;
(*L).data[i-1]= x ;
(*L).last = (*L).last +1 ;
}
return 1 ;
}

/* 删除函数*/ /*从表中删除第I个结点*/
int delete (sequenlist *L, int i)
{
int j ;
//if(i<1||i>(*L).last+1)
if(i<1||i>(*L).last+1)
{
printf("error\n") ;
return 0 ;
}
else
{
for ( j=i;j<= (*L).last;j++)
(*L).data[j-1]= (*L).data[j];
(*L).last = (*L).last -1;
}
return 1 ;
}

/* 生成线性表*/
void creatlist (sequenlist *L)
{
int i,n ;
printf ("Please input the length of the sequenlist:" ); /*输入N个数据*/
scanf("%d",&n);
printf("Please input the data of the sequenlist:\n");
for(i=0;i<n;i++)
{
printf("%5d",i);
scanf("%c",&(*L).data[i]);
}
(*L).last=n-1;
printf ("\n");
}

/* 输出线性表*/
void printout (sequenlist *L)
{
int i;
for ( i=0;i< (*L).last;i++)
{
printf("data[%d]=",i);
printf("%3c ",(*L).data[i]) ;
}
}


void main()

{
sequenlist *L,l;
char cmd ,x;
int i;
L=&l;

// clrscr();
printf(" 功能表 \n");
printf(" i,I -----------插入\n");
printf(" d,D -----------删除\n");
printf(" q,Q -----------退出\n");
printf("第一步,创建:\n");
creatlist (L);//创建
do
{
do
{
cmd=getchar() ;
}
while (( cmd!='d' )&& (cmd!='D' )&& (cmd!='I' )&& (cmd!='i' )&&(cmd!='q') &&(cmd!='Q')) ;
switch (cmd)
{
case 'i' :
case 'I' :
{
printf("Please input the character:");
scanf("%c",&x);
printf("Please input the position what you want to insert :");
scanf("%d",&i);
printf("Insering......\n");
insert(L,x,i);
printf("Output the data after inserting :");
printout(L);
break ;
}
case 'd':
case 'D':
{
printf("请输入你要删除的位置:");
scanf("%d",&i) ;
printf("删除中....\n");
delete(L , i);
printf("Outputing the data of sequenlist after deleting \n");
printout (L) ;
break ;
}
}
}
while ((cmd!='q')||(cmd!='Q'));
}
...全文
204 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧