首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 谁能帮写一下,链栈的基本操作,晕死了谢谢 [已结帖,结帖人:s79947171]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s79947171
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-19 01:13:13 楼主
    #pragma once
    #include <iostream>
    using  namespace std;

    typedef struct stacknode
    {
    //数据域
    int s;
    //指针域
    struct stancknode *next;
    }Stancknode;

    typedef struct
    {
      Stancknode *top;
    }LinkStack;
    class CTest
    {
    public:
    CTest();
    ~CTest();
    void create(LinkStack * p);//创建新栈
    bool push(Stancknode * p,int temp);//入栈
    void pop(Stancknode * p);
    Stancknode getTop(Stancknode *p);
    bool setEmoty(Stancknode *p);//置空
    };
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-19 01:18:361楼 得分:0
    http://topic.csdn.net/u/20081030/12/177e786a-90b2-4cc7-ba4b-348c420e6033.html
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • johnelf
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-19 08:10:272楼 得分:20
    C/C++ code
    void InitStack(stack &s) { s.base=(int *)malloc(10*sizeof(int)); if(!s.base) {cout<<"ERROR"<<endl;return;} s.top=s.base; s.stacksize=10; cout<<"Stack is successfully created"<<endl; } void Push(stack &s,int e) { if(s.top-s.base>=s.stacksize) { s.base=(int *)realloc(s.base,(s.stacksize+5)*sizeof(int)); if(!s.base) {cout<<"failure"<<endl;return;} s.top=s.base+s.stacksize; s.stacksize+=5; } *s.top++=e; cout<<"Add successfully!"<<endl; } int Pop(stack &s,int &e) { if(s.top==s.base) {cout<<"empty"<<endl;return 0;} e = *--s.top; return e; } boolean set_empty(Stack &S) //判断栈是否为空 { S.top = S.base ; //置空 if(S.top == S.base) return true; else return false; } int Empty(Stack &S) //判断栈是否为空 { if(S.top==S.base) return 1; return 0; } int GetTop(Stack &S) { if(!Empty(S)) return *(S.top-1); //栈若不空得到栈顶的元素 return 0; } //自己去改个名字就好了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DarknessTM
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-19 08:48:033楼 得分:0
    用 list 就可以了……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chiyer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      4

      4

    发表于:2008-11-19 10:10:554楼 得分:20
    C/C++ code
    #include <iostream> using namespace std; struct stack_node { int data; stack_node* next; stack_node* prev; }; struct link_stack { link_stack() : head(NULL), tail(NULL) { } ~link_stack() { clear(); } void clear() { stack_node* cur = head; while (cur) { stack_node* del = cur; cur = cur->next; delete del; } head = tail = NULL; } void push(int data) { stack_node* node = new stack_node; node->data = data; node->next = NULL; if (tail == NULL) { node->prev = NULL; head = tail = node; } else { node->prev = tail; tail->next = node; tail = tail->next; } } void pop() { if (tail == head) { delete tail; head = tail = NULL; } else { tail = tail->prev; delete tail->next; tail->next = NULL; } } int top() { return tail ? tail->data : 0; } void print() { stack_node* cur = head; if (!cur) cout<<"null"; while (cur) { cout<<cur->data<<(cur->next ? " -> " : ""); cur = cur->next; } cout<<endl; } stack_node* head; stack_node* tail; }; int main() { link_stack ls; for (int i = 0; i < 10; ++i) ls.push(i); ls.print(); cout<<ls.top()<<endl; ls.pop(); cout<<ls.top()<<endl; ls.pop(); cout<<ls.top()<<endl; ls.clear(); ls.print(); return 0; } --------------- 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 9 8 7 null 请按任意键继续. . .
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lgccaa
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-19 11:10:365楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ztz0223
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-19 11:17:236楼 得分:10
    用得着那么复杂吗?
    我给你一个简单的:
    C/C++ code
    #include <string.h> #include <stdlib.h> typedef struct List_Stack { struct List_Stack *next; int mytree; } Node, *LS; void initstack(LS *a) { (*a) = (LS)malloc(sizeof(Node)); (*a)->next = NULL; } bool stackempty(const LS a) { return a->next == NULL; } /* 链栈一般不会满,不测试 bool stackfull(const LS a) { return !stackempty(a); } */ void push(LS *lstack, int a) { LS res = (LS)malloc(sizeof(Node)); res->mytree = a; res->next = (*lstack)->next; (*lstack)->next = res; } int pop(LS *lstack) { if (stackempty(*lstack)) { printf("Pop error,stack is empty!\n"); return NULL;//打印一个笑脸 } LS p = (*lstack)->next; int x = p->mytree; LS pnext = p->next; //free(p); (*lstack)->next = pnext; return x; }
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved