| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1760 人关注过本帖, 1 人收藏
标题:求:连表的插入与删除算法
只看楼主 加入收藏
wgcz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-13
收藏(1)
 问题点数:0 回复次数:7 
求:连表的插入与删除算法
请高手帮个忙,我刚学数据结构,入门有些困难,大家帮助帮助拉...谢了
(用c语言编写)
搜索更多相关主题的帖子: 算法 删除 
2008-11-13 13:14
jdshaoheyi
Rank: 1
等 级:新手上路
帖 子:133
专家分:5
注 册:2008-11-6
收藏
得分:0 
辛辛苦苦做出来的啊!
#include<stdio.h>
#include<malloc.h>
#include  <stdlib.h>


typedef struct Lnode
{
    int data;
    struct Lnode *next;
}Lnode,*Linklist;

//*********************************************************链表创建函数
int  creat (Linklist &L,int n)
{
   Lnode *p;
   
   p=(Linklist)malloc(sizeof (Lnode)); //

   p->data=n;
   p->next=L;
   L=p;
   return 1;
}



//******************************************************删除函数部分

int del (Linklist &p,int n)
{
  int i;
  Lnode *q;
  
  for(i=1;i<n-1;i++)
      p=p->next;  //找到删除元素前一个节点
      
      printf("要删除的节点对应数据是 %d\n",p->next->data);
      q=p->next;   //将要删除的元素赋给q

      p->next=q->next;
      
      free(q);   //释放q节点
      return 1;
}
//*********************************************************************插入函数部分

int insert (Linklist &L1,Lnode *p,int m)
{
    int i;
    for(i=1;i<m-1;i++)
        L1=L1->next;  //找到要插入节点位置前一个节点

        p->next=L1->next;

        L1->next=p;
        return 1;
}

//*******************************************************************主函数部分
int main()
{   
    int flag=0;
    int data;  
    int i;     //作为计数器
    int num;  //链表的总长度
    int del_num,insert_num;    //要删除插入节点的序列号
    Lnode *newnode;  //创建等待插入节点
    Lnode *L1;

//Lnode *ceshi;

    Linklist L;
    L=newnode=(Linklist)malloc(sizeof(Lnode));
    L->next=NULL;
//*************************************************开始创建链表
    printf("请输入链表长度(int):\n");
    scanf("%d",&num);
    
    for(i=1;i<=num;i++)
    {
        printf("请输入节点数据(整数):\n");
        scanf("%d",&data);
        creat(L,data);   

    }
/********************************************************************测试时使用此语句

    ceshi=L;
    printf("你创建的链表是:\n");
    while(!(ceshi->next==NULL))
    {
        printf(" %d ",ceshi->data);
        ceshi=ceshi->next;
    }
    
    
    printf("\n");
    printf("创建链表成功!\n");
    printf("****************************");
    
    
*/    
//***************************************************************************删除部分
    while(flag==0)
    {
        printf("\n请输入要删除节点的序列号:\n");
        scanf("%d",&del_num);
         if(del_num<=1||del_num>=num)
             printf("输入有误(你不能删除首节点和尾节点)!");
         else
            flag=1;
    }

      
    L1=L;  //防止更改L
    del(L1,del_num);
   
    printf("删除节点后的链表是:\n");
    
    L1=L;  //防止更改L
    while(!(L1->next==NULL))
    {
        printf(" %d ",L1->data);
        L1=L1->next;
    }
    printf("\n\n");

//********************************************************************调用插入函数    
    
  
    printf("请输入要插入节点的数据部分(int型):\n");
    scanf("%d",&data);   
    newnode->data=data;
   
    printf("\n请输入insert_num的值(int型):\n");
    printf("新节点将被插入在你输入节点号对应节点的后面!\n");
    
    scanf("%d",&insert_num);
    
    printf("节点将被插在第%d个节点之后!\n",insert_num);
    

    
    L1=L;
    insert(L1,newnode,insert_num);
  
    printf("\n插入新节点后的链表是:\n");

    L1=L;

    for(i=1;i<=num;i++)
    
    {
        printf(" %d ",L1->data);
        L1=L1->next;
    }
    
    printf("\n\n");
    return 1;
}
收到的鲜花
  • wgcz2008-11-13 19:10 送鲜花  2朵   附言:我很赞同
2008-11-13 17:09
jdshaoheyi
Rank: 1
等 级:新手上路
帖 子:133
专家分:5
注 册:2008-11-6
收藏
得分:0 
我觉的我写的很详细了!
2008-11-13 17:09
jdshaoheyi
Rank: 1
等 级:新手上路
帖 子:133
专家分:5
注 册:2008-11-6
收藏
得分:0 
对了,我是用VC编写的!
2008-11-13 17:10
wgcz
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-13
收藏
得分:0 
运行了一下,很不错,辛苦你了...
  虽然看的很吃力,但谢拉...我会慢慢学的...
2008-11-13 19:15
C_J_B
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-14
收藏
得分:0 
写的好详细啊 好比教材好
2008-11-14 23:20
枯叶
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-12-1
收藏
得分:0 
写得很好啦,不过能不能把计算表长也写上去耶,偶也是新手,还不太会
2008-12-03 17:12
编程小呆
Rank: 2
来 自:西电
等 级:论坛游民
帖 子:31
专家分:23
注 册:2010-3-20
收藏
得分:0 
收藏额
2010-03-21 13:06
快速回复:求:连表的插入与删除算法
数据加载中...
 
   



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

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