xinu2009的个人空间 https://blog.eetop.cn/482824 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

C/C++链表功能实现

已有 973 次阅读| 2010-5-18 21:17 |个人分类:C/C++日常积累

c/c++ 链表功能的实现

今天关注的主题是链表的相关操作,这里使用链表(单向)主要解决动态存储数据体列表的问题。
直接贴代码先:

se.h


#ifndef LIBTEST_SE_H
#define LIBTEST_SE_H
#include 
<stdio.h>

class seTest{
public:
    
struct Elist{
        
int eid;
        Elist 
*next;
    };
};

#endif;

 

main.cpp

  1/*
  2功能描述: c/c++ 链表的实现测试
  3创建时间: 2009-04-16
  4
  5*/

  6
  7#include "stdafx.h"
  8#include "iostream" 
  9#include "se.h"
 10using namespace std;
 11
 12void InsertEndList(seTest::Elist *head, seTest::Elist *elist);
 13seTest::Elist* InsertSortList(seTest::Elist *head, seTest::Elist *elist);
 14seTest::Elist* DeleteFromList(seTest::Elist *head, int id);
 15void Print(seTest::Elist *head);
 16
 17void main()
 18{    
 19    seTest::Elist *elist;
 20    elist=(seTest::Elist*)malloc(sizeof(seTest::Elist));  
 21    elist->eid=2;
 22    elist->next =NULL;
 23
 24    seTest::Elist *oneptr_1;
 25    oneptr_1=(seTest::Elist*)malloc(sizeof(seTest::Elist));  
 26    oneptr_1->eid=1;
 27    oneptr_1->next=NULL;
 28    //InsertEndList(elist, oneptr_1);                //将节点插到链表尾部
 29    elist = InsertSortList(elist, oneptr_1);        //按顺序插入节点
 30
 31    seTest::Elist *oneptr_2;
 32    oneptr_2=(seTest::Elist*)malloc(sizeof(seTest::Elist));  
 33    oneptr_2->eid=3;
 34    oneptr_2->next=NULL;
 35    //InsertEndList(elist, oneptr_2);                //将节点插到链表尾部
 36    elist = InsertSortList(elist, oneptr_2);        //按顺序插入节点
 37    
 38    //通过ID删除链表中元素
 39    elist = DeleteFromList(elist,2);
 40
 41    //输出链表数据
 42    Print(elist);
 43    cin.get();
 44}

 45
 46//将数据插入链表中(直接插入到链表尾部)
 47void InsertEndList(seTest::Elist *head, seTest::Elist *elist)
 48{
 49    seTest::Elist *p;
 50    if(head==NULL)
 51    {
 52        head = elist;
 53    }

 54    else
 55    {
 56        p = head;
 57        while(true)
 58        {
 59            p->eid;
 60            if(p->next==NULL)
 61            {
 62                p->next = elist;
 63                p = p->next;
 64                break;
 65            }

 66            else
 67            {
 68                p = p->next;
 69            }

 70        }

 71    }

 72}

 73
 74//将数据插入链表中(排序链表)
 75seTest::Elist* InsertSortList(seTest::Elist *head, seTest::Elist *elist)
 76{
 77    seTest::Elist *p,*fp; //*p:当前节点指针  *fp:上一个节点指针
 78    if(head==NULL)
 79    {
 80        head = elist;
 81    }

 82    else
 83    {
 84        //待插入节点值比头节点值小,直接插入到链表前面
 85        if(elist->eid < head->eid)
 86        {
 87            elist->next = head;
 88            head = elist;
 89        }

 90        else
 91        {
 92            fp = head;
 93            p = head->next;
 94            while(true)
 95            {
 96                if(p==NULL)
 97                {
 98                    fp->next = elist;
 99                    break;
100                }

101                else
102                {
103                    //如果链表当前节点的值大于或等于要插入节点的值
104                    if(p->eid>=elist->eid)
105                    {
106                        fp->next = elist;
107                        elist->next = p;
108                        break;
109                    }

110                    fp = p;
111                    p = p->next;
112                }

113            }

114        }

115    }

116    return head;
117}

118
119//根据ID值在链表中删除对应的节点
120seTest::Elist* DeleteFromList(seTest::Elist *head, int id)
121{
122    seTest::Elist *p,*fp; //*p:当前节点指针  *fp:上一个节点指针
123    if(head==NULL)
124    {
125        cout<<"链表为空"<<endl;
126   &nb

点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 0

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 1501

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 04:53 , Processed in 0.020334 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部