幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2293|回复: 6

[通用编程] 关于链实现的栈

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-9-2 22:50:46 | 显示全部楼层 |阅读模式
#include<stdio.h>
#include<malloc.h>
typedef struct linknode
{
    char data;
    struct linknode *next;
}linkstack;
void initstack(linkstack **s)        // 初始化栈
{
    *s=NULL;
}
void push(linkstack **s,char x)      // 入栈
{
    linkstack *q,*q1;
    q1=*s;
    q=(linkstack *)malloc(sizeof(linkstack));
    q->data=x;
    q->next=*s;
    *s=q;
}
void pop(linkstack **s)              // 出栈
{
    linkstack *t;
    if(*s==NULL) printf("栈下溢出!\n");
    else
    {
        t=*s;
        *s=t->next;
        free(t);
    }
}
char gettop(linkstack **s)           // 取栈顶元素
{
    if(*s==NULL) return -1;
    else return((*s)->data);
}
int empty(linkstack **s)             // 判断是否为空
{
    if(*s==NULL) return 1;
    else return 0;
}
void display(linkstack **s)         // 显示所有元素
{
    linkstack *q;
    printf("栈中元素:");
    q=*s;
    while(q!=NULL)
    {
        printf("%c ",q->data);
        q=q->next;
    }
    printf("\n");
}
void main()
{
    linkstack *stack;
    printf("建立空栈\n");
    initstack(&stack);
    printf("栈空:%d\n",empty(&stack));
    printf("依次插入a,b,c,d\n");
    push(&stack,'a');
    push(&stack,'b');
    push(&stack,'c');
    push(&stack,'d');
    display(&stack);
    printf("退一次栈\n");
    pop(&stack);display(&stack);
}
偶想问下入栈的那部分,最后的一句 *s=q;   是不是每次插入后,使栈顶的元素地址就是刚刚插入的那个地址呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-4 19:04:58 | 显示全部楼层
august君幹嘛用malloc中的stack!? 用STL中的stack還不夠好嗎。。。

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2007-9-4 19:54:41 | 显示全部楼层
我猜有两个可能
1.要打好坚实的基础,所以先学c实现的数据结构。
2.还不知道C++中的STL就包括了数据结构的实现
え~え~お!!!
回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-9-4 22:54:58 | 显示全部楼层
[s:5] STL具体是干嘛偶都还没搞懂,
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-5 14:53:23 | 显示全部楼层
學好e文到C++.com看吧。。。
STL->Standard Template Library
就是一羣JQ的家伙,用了Template的技巧,寫了一堆程序和資料結構出來,而所有的資料型態(包括自定義)也可以使用這些物事
  1. struct ltstr
  2. {
  3.   bool operator()(const char* s1, const char* s2) const
  4.   {
  5.     return strcmp(s1, s2) < 0;
  6.   }
  7. };
  8. int main()
  9. {
  10.   map<const char*, int, ltstr> months;
  11.   months["january"] = 31;
  12. ...
复制代码

這種用法沒看過吧。。這只是STL的其中一種用法而已

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-9-5 16:58:54 | 显示全部楼层
[s:5] 还是先打好基础吧...............
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

1

主题

19

帖子

656

积分

⑤进阶

大猫

积分
656
QQ
发表于 2007-9-6 15:04:12 | 显示全部楼层
学习时候实现数据结构是好习惯,楼主加油 [s:1]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 10:58 , Processed in 0.029398 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表