| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:我做的一个链表操作,望高手指教
只看楼主 加入收藏
高高倒过来念
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
我做的一个链表操作,望高手指教
// shiyaner.cpp : Defines the entry point for the console application.
//

#include <iostream.h>
#include <string.h>
#define AID 1234
//定义结构体
struct Stu
{
    char* StuName ;
    int StuID;
    Stu* next;
};
typedef Stu List;
//插入中间某一个字节之hou
void InsertToMid(List*ls,char*name,int id)
{
    Stu * T = ls ;
    //检测节点
    if(id==NULL)
        return;
    //生成新节点
    Stu*p = new Stu;
    //原链表为空的情况
    if(ls==NULL)
    {
        p=ls->next;
        p->next = NULL;
    }
    //给节点数据项赋值
    p->StuID=id;
    int nlen = strlen (name)+1;
    p->StuName = new char[nlen];
    strcpy (p->StuName,name);
    //寻找目标节点
    while(T->next->StuID!=AID)
    {
        T=T->next ;
    }
    //插入
    p->next=T->next;
    T->next = p ;
}
//输出插入后的函数
void InsertShowList(List * lst)
{
    Stu *p = lst->next ;
    //标题
    cout<<"Name";
    cout<<"ID"<<endl;
    //输出结构体内容
    while (p)
        if(p->StuName==NULL)
            cout<<" ";
        else
            cout<<p->StuName ;
        cout<< p->StuID<<endl ;
        //指向下一个节点
        p = p->next;
}
//删除一个节点
void Delete(List * lst,int id )
{
    Stu *p = lst ;//the first is null                                                                                                                  
    while (p->next->StuID!= id)
    {
        Stu * Q=p->next;
        p->next = p->next->next;
        if(Q->StuName!=NULL)
            delete [] Q->StuName;
        delete Q;
    }
}
//输出删除后的函数
void DeleteShowList(List * lst)
{
    Stu *p = lst->next ;
    //标题
    cout<<"Name";
    cout<<"ID"<<endl;
    //输出结构体内容
    while (p)
        if(p->StuName==NULL)
            cout<<" ";
        else
            cout<<p->StuName ;
        cout<< p->StuID<<endl ;
        //指向下一个节点
        p = p->next;
}
//释放空间
void FreeList(List * lst)
{
    if(lst==NULL)
        return;
    //第一个节点为空 从第二个开始
    Stu * p= lst->next;
    while(p)
    {
        Stu * T = p;
        p=p->next;
        if(T->StuName)
            delete [] T->StuName;
        delete T;
    }
    lst ->next = NULL ;     
}
void main()
{
    List  ls;
    struct Stu a,b,*head;
    head = &a;
    ls = *head;
    a.next = &b;
    b.next = NULL;
    a.StuID = 1234;
    strcpy(a.StuName,"王一");
    b.StuID = 1231 ;
    strcpy(b.StuName,"王二");
    InsertToMid(&ls,"张一",1234);
    InsertToMid(&ls,"张二",1235);
    InsertShowList(&ls);
    DeleteShowList(&ls);
}
搜索更多相关主题的帖子: 指教 链表 
2010-04-06 21:41
秀痘魔导士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:250
专家分:1150
注 册:2009-12-23
收藏
得分:7 
问题是什么?
2010-04-08 10:38
james230932
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:162
专家分:629
注 册:2008-1-20
收藏
得分:7 
找错?

老天给了我十根纤纤玉指,我却用它们来挖鼻屎。
2010-04-08 19:55
高高倒过来念
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-6
收藏
得分:0 
在vc6.0里面没有错误,但是不能运行,而且不能调试,大家帮忙看一下哈。。
2010-04-10 22:54
cyhysr
Rank: 2
等 级:论坛游民
帖 子:8
专家分:17
注 册:2009-2-25
收藏
得分:0 
typedef Stu List;和后面的程序是不是有点问题
2010-04-11 19:29
快速回复:我做的一个链表操作,望高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved