成都创新互联网站制作重庆分公司

c语言建立栈主函数怎么写 C语言函数调用栈

C语言数据结构栈的主函数怎么调用?主函数怎么写?下面是栈的部分程序,帮忙把主函数不出来吧

你这是数据结构中的队列问题,而不是栈的问题。head代表的是队列头,删除时删的是队列头元素,tail代表的是队列尾,插入时插的是队列尾元素

创新互联公司是一家集网站建设,麟游企业网站建设,麟游品牌网站建设,网站定制,麟游网站建设报价,网络营销,网络优化,麟游网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

程序中这条语句是错误的。中括号只有一半,那一半呢? *p_y=qp++head];

至于要求的主函数,如果是队列问题还要涉及的是一般队列还是循环队列,因此没法写给你。

栈的c语言实现基本操作

写了一个链式栈,你看看

# include stdio.h

# include malloc.h

# include stdlib.h

typedef struct Node

{

int data;

struct Node *pNext;

}NODE, *PNODE;

typedef struct Stack

{

PNODE pTop;

PNODE pBottom;//pBottem是指向栈底下一个没有实际意义的元素

}STACK, *PSTACK;

void init( PSTACK );

void push( PSTACK, int );

void traverse( PSTACK );

int pop( PSTACK, int * );

int empty( PSTACK pS );

int main( void )

{

STACK S;//STACK等价于struct Stack

int val;

init( S );//目的是造出一个空栈

push( S, 1 );//压栈

push( S, 2 );

push( S, 3 );

push( S, 4 );

push( S, 5 );

push( S, 6 );

push( S, 7 );

traverse( S );//遍历输出

// clear( S ); //清空数据

// traverse( S );//遍历输出

if( pop( S, val ) )

{

printf( "出栈成功,出栈的元素是%d\n", val );

}

else

{

printf( "出栈失败" );

}

traverse( S );//遍历输出出栈之后的元素

return 0;

}

void init( PSTACK pS )

{

pS-pTop = ( PNODE )malloc( sizeof( NODE ) );

if( NULL == pS-pTop )

{

printf( "动态内存分配失败!\n" );

exit( -1 );

}

else

{

pS-pBottom = pS-pTop;

pS-pTop-pNext = NULL;//或是pS-pBottom = NULL;

}

}

void push( PSTACK pS, int val )

{

PNODE pNew = ( PNODE )malloc( sizeof( NODE ) );

pNew-data = val;

pNew-pNext = pS-pTop;//pS-Top不能改为pS-pBottom

pS-pTop = pNew;

}

void traverse( PSTACK pS )

{

PNODE p = pS-pTop;

while( p != pS-pBottom )

{

printf( "%d ", p-data );

p = p-pNext;

}

printf( "\n" );

}

int empty( PSTACK pS )

{

if( pS-pTop == pS-pBottom )

return 1;

else

return 0;

}

//把pS所指向的栈出栈一次,并把出栈的元素存入pVal形参所指向的变量中,如果出栈失败,则返回false,否则true

int pop( PSTACK pS, int *pVal)

{

if( empty( pS ) )//pS本身存放的就是S的地址

{

return 0;

}

else

{

PNODE r = pS-pTop;

*pVal = r-data;

pS-pTop = r-pNext;

free( r );

r = NULL; //为什么要把r赋给NULL呢??

return 1;

}

}

//clear清空

void clear( PSTACK pS )

{

if( empty( pS ) )

{

return ;

}

else

{

PNODE p = pS-pTop;

PNODE q = p-pNext;

while( p != pS-pBottom )

{

q = p-pNext;

free( p );

p = q;

}

pS-pTop = pS-pBottom;

}

}

如何写数据结构中栈的顺序表示中主函数?我要的是C语言版的。例子如下

//Sorry,看来我理解错了,这是改后的》》》》》》》》

//顺序栈

#includestdio.h

#includestdlib.h

#define MAXSIZE 100

typedef struct

{

int data[MAXSIZE];

int top;

}SqStack;

void PushStack(SqStack *S,int x) //入栈

{

if(S-top==MAXSIZE-1) printf("栈已满,不能入栈!\n");

else

}

void PopStack(SqStack *S) //退栈

{

if(S-top==-1) printf("栈为空,不能出栈!\n");

else

}

int GetStackTop(SqStack S) //取栈顶元素

{

return S.data[S.top];

}

main()

{

int x,i;

SqStack myStack;

myStack.top=-1;

do

{

printf("请选择你需要的操作:\n1.置空栈.\n2.进栈.\n3.退栈.\n4.取栈顶元素.\n5.退出程序.\n(请输入1或2或3或4或5):");

scanf("%d",i);

switch(i)

{

case 1:myStack.top=-1;printf("栈已置空!\n");break;

case 2:printf("请输入你要进栈的元素:");

scanf("%d",x);

PushStack(myStack,x);break;

case 3:PopStack(myStack);break;

case 4:if(myStack.top!=-1) printf("栈顶元素是 %d.\n",GetStackTop(myStack));

else printf("栈为空,没有元素!\n");break;

case 5:break;

default:printf("选择错误,请重新输入!\n");break;

}

}while(i!=5);

return 0;

}

//链栈

#includestdio.h

#includestdlib.h

typedef struct SNode

{

int data;

struct SNode *next;

}SNode,*LinkStack;

LinkStack top;

LinkStack PushStack(LinkStack top,int x) //入栈

{

LinkStack s;

s=(LinkStack)malloc(sizeof(SNode));

s-data=x;

s-next=top;

top=s;

return top;

}

LinkStack PopStack(LinkStack top) //退栈

{

LinkStack p;

if(top!=NULL)

{

p=top;

top=top-next;

free(p);

printf("退栈已完成\n");

return top;

}

else printf("栈是空的,无法退栈!\n"); return 0;

}

int GetStackTop(LinkStack top) //取栈顶元素

{

return top-data;

}

main()

{

int i,x;

do

{

printf("请选择你需要的操作:\n1.置空栈.\n2.进栈.\n3.退栈.\n4.取栈顶元素.\n5.退出程序.\n(请输入1或2或3或4或5):");

scanf("%d",i);

switch(i)

{

case 1:top=NULL;break;

case 2:printf("请输入你要进栈的元素:");

scanf("%d",x);

top=PushStack(top,x);

printf("进栈已完成!\n");break;

case 3:top=PopStack(top);break;

case 4:if(top!=NULL) printf("栈顶元素是:%d!\n",GetStackTop(top));

else printf("栈是空的,没有元素!\n");break;

case 5:break;

default:printf("选择错误,请重新输入!\n");break;

}

}while(i!=5);

return 0;

}


网站题目:c语言建立栈主函数怎么写 C语言函数调用栈
URL地址:http://cxhlcq.com/article/doosshc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部