网站建设资讯

NEWS

网站建设资讯

c语言中栈函数语法 c语言栈函数可以直接用吗

关于c语言 压栈函数

方法很简单:你讲两个饥竖栈都传进去,类似于 : int pus(SeqStack1 *s, DataType* x1, SeqStack2 *s, DataType* x2)(SeqStack1是你的第一个栈,SeqStack2是第二个栈,DataType是你需要传进去的数据衡肢销的类型),然后在这个函数里面先判断x1 ,x2是否为空,如果为空,则他对应的那个栈不需要压栈,如果不为空,则执咐游行相应的压栈操作。

创新互联主要从事成都网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务荔湾,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

不明白继续追问!

C语言关于栈操作

/*

这是关于栈的操作

那么应该定义一个栈类型

栈中包含两个元素

栈顶指针

栈底指针

以下是修改后的,行核竖供参考

*/

# include stdio.h

# include stdlib.h

# include string.h

struct link

{

char name[40];

int age;

struct link * next;

};

typedef struct link Node;

typedef Node * List;

typedef struct Stack

{

List pTop;

List pBottom;

}STACK,* PSTACK;

void init(PSTACK pS)//初始化栈

{

pS-pTop = (Node *)malloc(sizeof(Node));

if (NULL == pS-pTop)

{

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

exit(-1);

}

else

{

pS-pBottom = pS-pTop ;

pS-pTop-next = NULL;

}

return;

}

/*入栈*/

void push(PSTACK pS,char * name,int age)

{

List p;

p=(Node*)malloc(sizeof(Node));/*申请新节点*/

if(p==NULL)

{

printf("error\n");

exit(1);

}

strcpy(p-name,name);/*将数据传入新节点*/

p-age=age;

p-next=pS-pTop;

pS-pTop=p;

return ;

}

//遍历栈,只档大是访问栈中元素的值,

//遍历完成后,栈中的元素个数是不会改变的

void traverse(PSTACK pS)

{

List p = pS-pTop;

while (p != pS-pBottom)

{

printf("%s%5d\n",p-name,p-age);

p = p-next ;

}

printf("\n");

return;

}

bool empty(PSTACK pS)

{

if (pS-pTop == pS-pBottom)

{

return true;

}

else

return false;

}

//出栈,将栈顶元素弹出,

//弹出后,栈中元素个数减少

//注意与 遍历栈 的区别

bool pop(PSTACK pS)

{

if (empty(pS))

{

return false;

}

else

{

List r = pS-pTop;

char * name = r-name;

printf("本次出栈元素的\nname=%s",name);

int age = r-age;

printf("\nage=%d",age);

pS-pTop = r-next;

free(r);

r = NULL;

return true;

}

}

void main()

{

STACK s;

printf("栈初始化操作\n");

init(s);

printf("开始压栈操作\n");

int len;

printf("请输入需要压入栈中的元素的个数:");

scanf("%d",len);

int i;

for (i=0; ilen; ++i)

{

printf("第%d个\n",(i+1));

printf("name:\t");

char name[40];

scanf("%s",name);

printf("age:\t");

int age;

scanf("%d",age);

push(s,name,age);

}

printf("遍历栈......\n");

traverse(s);

printf("弹出栈顶元素\n");

pop(s);

printf("\n弹出后重新遍历栈\n");

traverse(s);

}

/*

----

栈初始化操作

开始压栈操作

请输入需要压入栈中的元素的个数:3

第1个

name: 许褚

age: 55

第2个

name: 徐晃

age: 66

第3个

name: 张氏咐辽

age: 22

遍历栈......

张辽 22

徐晃 66

许褚 55

弹出栈顶元素

本次出栈元素的

name=张辽

age=22

弹出后重新遍历栈

徐晃 66

许褚 55

-----

*/


分享文章:c语言中栈函数语法 c语言栈函数可以直接用吗
分享URL:http://cdweb.net/article/dsjjhds.html