| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:单连表的算法 
只看楼主 加入收藏
appleflower
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-12-9
收藏
 问题点数:0 回复次数:2 
单连表的算法 
#include <iostream.h>
#include <stdlib.h>
typedef struct Node
{
 int data;
 struct Node *next;
}Lnode,*Linklist;
Linklist Creat_LinkList()//创建
{
   Linklist L;
   Lnode *s,*r;
   int x,h=6;
   L=r=NULL;
   cout<<"请输入六个初始链表元素"<<endl;
   cin>>x;
   while (h>1)
   {s=new Lnode;
   s->data=x;
   if(L==NULL)
    L=s;
   else
    r->next=s;
   r=s;
   cin>>x;
   h--;
   }
   if(r!=NULL)
    r->next=NULL;
   return L;
}
Lnode *Get_linklist(Linklist L,int i)
{
 Lnode *p;
 int j;
 p=L->next;
 j=1;
 while(p!=NULL&&j<i)
 {
  p=p->next;
  j++;
 }
 return p;
}
int Insert_linklist(Linklist L,int i,int x)//在单链表L的第i个位置插入X
{
 Lnode *p,*s;
 p=Get_linklist(L,i-1);//查找第i-1个结点
 if(p==NULL)
 {
  cout<<"参数"<<i<<"错,结点不存在"<<endl;
  return 0;
 }//第i-1个结点不存在,不进行插入
 else{
  s=new Lnode;//申请,填装结点
  s->data=x;
  s->next=p->next;//新结点插入第i-1个结点的后面
  p->next=s;
  return 1;
 }
}
void  Del_linklist(Linklist L,int i)//删除单链表L上第i个数据结点
{
 Linklist p,s;
 p=Get_linklist( L,i-1);//查找第i-1个结点
 if(p==NULL)
  cout<<"第"<<i-1<<"个节点不存在"<<endl;
 else
  if(p->next==NULL)
   cout<<"第"<<i+2<<"个节点不存在"<<endl;
  else{
   s=p->next;//s指向第i个结点
   p->next=s->next;//从链表中删除s结点
   cout<<"删除成功"<<endl;
   delete s;//释放s结点空间
  }
}
void show_linklist(Linklist p)//输出函数
{
 cout<<"此时链表中元素如下:"<<endl;
 while(p!=NULL){
  cout<<p->data<<'\t';
  p=p->next;
 }
 cout<<endl;
}
void menu()
{
 cout<<"\n\n\t\t\t 单    表\n\n\n\t\t\t0 退     \n\n\t\t\t1 插   入\n\n\t\t\t2 删   除\n\n\t\t\t3 显   示 \n\n";
 cout<<"请选择你要进行的操作(0----->3):\t";
}
void main()
{
 Linklist L=Creat_LinkList();
 menu();

 while(1)
 {
  int a,b;
  cin>>a;
  switch (a)
  {
   case 0:exit(0);menu();break;
   case 1:
    cout<<"请输入要插入的位置及元素"<<endl;
    cin>>a>>b;
    Insert_linklist(L,a,b);
    show_linklist(L);
    menu();break;
   case 2:
    cout<<"请输入要删除的位置"<<endl;
    cin>>a;
    Del_linklist(L,a-1);
    show_linklist(L);
    menu();break;
   case 3:show_linklist(L);menu();break;
   default :
    menu();
    cout<<"输入无效≌请重新输入(0======== 3)"<<endl;
    break;
  }
 }
}
搜索更多相关主题的帖子: 单连表 算法 
2007-12-09 11:59
孤魂居士
Rank: 2
来 自:老A(中国地大)
等 级:论坛游民
威 望:4
帖 子:1142
专家分:18
注 册:2007-5-21
收藏
得分:0 

一个单连表代码这长啊 ?

准备用3年做个高级软件工程师 10年也做不成。准备用10年做成高级软件工程师 3年就成了QQ 群 45771086
欢迎版主...欢迎JAVA爱好者...
一起从深夜 到凌晨...
2007-12-09 12:06
conish
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-11-9
收藏
得分:0 
你学了数据结构后,觉得这个就不是很长了!
2007-12-10 08:54
快速回复:单连表的算法 
数据加载中...
 
   



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

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