快速业务通道

C++双向循环链表的操作与实现

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

双向循环链表的操作与实现……

网上关于这方面的挺多,由于自己以前上课没好好学数据结构,现在重新认识数据结构,以下是自己写的基于C++的双向循环链表的创建及其一些操作与实现(于VC下通过),没用模板,

也没用类,所以比较适合有一点C++语言基础入门者,但可移植不够。有什么bug的话,欢迎指出。

或有什么问题也可以联系我。

made by virgil (2009.2.8)

MSN:hangyu_628@hotmail.com)

#include <iostream>
#include <cstdlib>
using namespace std;
  int N=10;
struct Node
{
char name[20];
Node *llink,*rlink;
};
  Node* Create(int n)
{
Node *h,*p,*s; //h:头结点,p:下一结点,s:当前结点
int i;
if((h=new Node)==NULL)
{
cout<<"分配内存失败..."<<endl;
}
h->name[0]=0;
h->llink=NULL;
h->rlink=NULL;
p=h;
for (i=0;i!=n;++i)
{
if((s=new Node)==NULL)
{
cout<<"分配内存失败..."<<endl;
}
p->rlink=s;
cout<<"请输入第"<<i+1<<"个人的姓名:";
cin>>s->name;
s->llink=p;
s->rlink=NULL;
p=s;
}
s->rlink=h;
h->llink=s;
return h;
}
Node* Search(Node* h,const char* name)
{
Node *p=h->rlink;
for (int i=0;i!=N;++i)
{
if (strcmp(p->name,name)==0)
{
return p;
}
p=p->rlink;
}
return p;
}
void Insert(Node *p)
{
Node *s=new Node;
cout<<"请输入要插入的姓名:";
cin>>s->name;
Node *r=p->rlink; //结点示意 p->s->r(s为插入的结点)
p->rlink=s;
s->llink=p;
r->llink=s;
s->rlink=r;
++N;
}
void Delete(Node *p)
{
Node *l=p->llink; //结点示意 l->p->r (p为要删除的结点)
Node *r=p->rlink;
l->rlink=r;
r->llink=l;
delete p;
--N;
}
void Display(Node *h)
{
Node *p;
p=h->rlink;
for (int i=0;i!=N;++i)
{
cout<<"第"<<i+1<<"个人的姓名:"<<p->name<<endl;
// delete p;
p=p->rlink;
}
}
  int main()
{
Node *head,*pSearch;
int number=N;
char strName[20];
head=Create(number);
cout<<endl;
  cout<<"你创建的结构如下:"<<endl;
Display(head);
cout<<endl;
//查找并插入...
cout<<"请输入你要查找的人的姓名:";
cin>>strName;
pSearch=Search(head,strName);
cout<<"你所要查找的人的姓名是: "<<pSearch->name<<endl;
cout<<endl;
Insert(pSearch);
cout<<"插入后的结果如下:"<<endl;
Display(head);
cout<<endl;
  //查找并删除...
cout<<"输入你要删除的结点: ";
cin>>strName;
pSearch=Search(head,strName);
Delete(pSearch);
cout<<"删除后的结果如下:"<<endl;
Display(head);
cout<<endl;
return 0;
}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号