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

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

[复制链接]
发表于 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;   是不是每次插入后,使栈顶的元素地址就是刚刚插入的那个地址呢?
发表于 2007-9-4 19:04:58 | 显示全部楼层
august君幹嘛用malloc中的stack!? 用STL中的stack還不夠好嗎。。。
发表于 2007-9-4 19:54:41 | 显示全部楼层
我猜有两个可能
1.要打好坚实的基础,所以先学c实现的数据结构。
2.还不知道C++中的STL就包括了数据结构的实现
 楼主| 发表于 2007-9-4 22:54:58 | 显示全部楼层
[s:5] STL具体是干嘛偶都还没搞懂,
发表于 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的其中一種用法而已
 楼主| 发表于 2007-9-5 16:58:54 | 显示全部楼层
[s:5] 还是先打好基础吧...............
发表于 2007-9-6 15:04:12 | 显示全部楼层
学习时候实现数据结构是好习惯,楼主加油 [s:1]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-10-29 23:19 , Processed in 0.011273 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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