请问怎么输出不了所有元素?

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int SElemType ;
typedef int status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
status InitStack(SqStack *s)
{
s->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
return OK;
}
status Push(SqStack *s,SElemType e)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(SElemType *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!s->base) exit(OVERFLOW);
s->top=s->base+STACKINCREMENT;
}
*s->top++=e;
return OK;
}
status StackPrint(SqStack s)
{

SElemType *p,*q;
p=s.top-1;
q=s.base;
for(;p>=q;p--)
printf("%3d",*p);
printf("\n");
return OK;
}
int menu()
{
int choice,i;
for(i=0;i<20;i++)
putchar(3);
printf("\n");
printf("1: InitStack\n2:Push\n3:StackPrint\n4:Gettop\n5:Pop\n6:Match\n7:exit\n");
for(i=0;i<20;i++)
putchar(3);
printf("\n");
do
{
printf("请选择:\n");
scanf("%d",&choice);
}while(choice<=0);
return choice;
}
void main()
{
SqStack S;
SElemType e;
int key,n,i;
while(1)
{
key=menu();
switch(key)
{
case 1:
InitStack(&S);
break;
case 2:
printf("要输入几个数据?\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("输入数据%d:\n",i);
scanf("%d",&e);
}
Push(&S,e);
break;
case 3: StackPrint(S);
break;
}
}
}

POPMUISE
浏览 88回答 2
2回答

三国纷争

一,1 D 数据元素是数据的基本单位, 数据项是不可分割的最小单位。2 C 线性表是由类型相同的数据元素组成的有限序列。线性表的数据元素可以是最简的数值和字符,也可以是比较复杂的信息。4 B 根据设定的哈希函数和处理冲突的方法将一组关键字映像到一个有限的连续的地址集上,并以关键字在地址集中的“象”作为记录在表中的存 储位置,这种表便成为哈希表。哈希函数是一个映像,因此哈希函数的设定很灵活,不需进行比较就可以直接取得所查记录。5 C 根据二维数组A[u1][u2]的列优先映射所对应的映射函数 map(i1,i2) = i2 * u1 + i1 其中u1=8 u2=10 ; i1=3 i2=6 ; map=6*8+3=51即4000+51*2=41026 D 根据后进先出原则c/d/a/b:c进栈然后出栈;a,b,d先后进栈,d出栈;此时栈中有a,b两个元素,必须是b先出栈,所以不会出现c/d/a/b序列二,1 数据的存储结构(即物理结构) 2、线性表中数据元素的个数n称为线性表的长度。 3 后进先出4、2056;2086。。u1=10,u2=8;i1=4-1=3,i2=5-1=4 ;行优先:map(i1,i2) = i1 * u2 + i2=28;列优先:map(i1,i2) = i2 * u1 + i1 =435 一个算法应该具有以下特点: 有穷性 、确定性、有零个或多个输入、有一个或多个输出、有效性 6、 n-i+1三,1、当要求随机存取线性表的任一元素,且逻辑上相邻的元素在物理位置上也相邻时,要采用顺序结构。因为线性表的顺序存储结构是用一组地址连续的存储单元依次存储线性表的元素,用元素在存储器中的“物理位置相邻”表示线性表中数据元素之间的逻辑关系,可随机存取任一个数据元素,是一种随机存储结构。2、当不要求逻辑上相邻的元素在物理位置上也相邻,不要求随机存取任一数据元素,但需要进行有效率的插入、删除等操作时,要采用链式存储 结构。(只讨论单链式)因为线性表的链式存储结构中用结点中的指针域表示数据元素之间的逻辑关系,这样逻辑上相邻的两个元素部要求物理存储位置也相邻。且每个元素的存储位置由其直接前驱的指针表示,方便进行插入、删除等操作,是一种非随机存储结构。四,1、 A[1][0] - A[2][0] - A[1][1] - A[2][1] - A[1][2] - A[2][2] (自己画框框吧。。。)2、。。。。这个就不用了吧 你肯定会的五 1、//--------循环队列----队列的顺序存储结构----------#define MAXQSIZE 100 //最大队列长度typedef struct {QElemType *base; // 初始化的动态分配存储空间int front; //头指针,若队列不空,指向队列头元素int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置} Q ;Status EnQueue (Q, x){ //插入元素x为新的队尾元素if (( Q.rear +1)%MAXQSIZE = = Q.front ) return ERROR; // 队列满Q.base[Q.rear] = x ;Q.rear = (Q.rear+1)%MAXQSIZE ;return OK ;}Status GetTop(Q, QElemType &e) { //若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;if (Q.front = = Q.rear) return ERROR ; //队列为空 返回errore = Q.base[Q.front];Q.front = (Q.front +1 ) % MAXQSIZE ;return OK;}2、一个带头结点的线性链表类型定义如下:typedef struct LNode { // 结点类型ElemType date ;struct LNode *next ;} *Link, *Position ;typedef struct { //链表类型Link head,tail ; //分别指向线性链表中的头结点和最后一个结点int len ; //指示线性链表中数据元素的个数} LinkList ;Status Excha-L ( LinkList &L, int i) {for(int i = n; i>=1; i--){ s = L[i-1]*next;InsFirst(head,s) ; } // 已知h指向线性链表的头结点,将s所指结点插入在第一个结点之前L[0]*next = tail ;return OK ;} // Excha-L3、由于线性表的长度可变,在C语言中可用动态分配的一维数组,一般情况下,删除第i((1≤i≤n)个元素)时需将从i+1 至第n(共n-i)个元素依次向前移动一个位置。如下描述:#define LIST-SIZE maxlen // 线性表存储空间的初始分配量typedef struct {ElemType *elem ; // 存储空间基址int length ; // 当前长度int listsize ; // 当前分配的存储容量} Stlist ;Status Listdelete-St (Stlist &L, int i ,ElemType &e) {// 在顺序线性表L中删除第i个元素,并用e返回其值// i的合法值为1≤i≤ListLength-Stif ((i<1) || (i> L.length)) return ERROR ; // i值不合法p = & (L.elem[i-1]) ; //p为被删除元素的位置e = *p ; //被删除元素的值赋给eq = L.elem + L.length -1 ; //表尾元素的位置for (++p; p<=q ; ++p) * (p-1) = *p ; //被删除元素之后的元素左移- -L.length ; //表长减1return OK ;} // ListDelete - St

喵喔喔

错误在main函数中的这一部分for(i=1;i<=n;i++){printf("输入数据%d:\n",i);scanf("%d",&e);}Push(&S,e);应改成for(i=1;i<=n;i++){printf("输入数据%d:\n",i);scanf("%d",&e);Push(&S,e);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

数据结构