ijava学习网> 知识分享> 其它分类> 数据结构--单向链表

数据结构--单向链表

时间: 2018-10-11 22:02:07 标签
#include 
#include 
#include 

#include
#include
#include
#include
typedef struct Link
{
    int data;
    struct Link * next;
}link;
link *initLink()
{
    link *p=(link *)malloc(sizeof(link));
    //创建一个头结点
     link *temp=p;
     for(int i=1;i<5;i++)
      {

          link *a=(link*)malloc(sizeof(link));
          a->data=i;
          a->next=NULL;
          temp->next=a;
          temp=temp->next;
      }
      return p;//用temp 代替p结点移动来进行创建每个结点
}
//同样的也是找到所要插入的位置的前一个,创建新的结点
link *insertElem(link *p,int elem,int add)
{
    link *temp=p;
    //创建临时结点用来遍历链表
    for(int i=1;inext;
      }
      //找到插入结点的前一个
     link *c=(link *)malloc(sizeof(link));//创建新的结点
       c->data=elem;
       c->next=temp->next;
       temp->next=c;
       return p;

}
//找到删除位置的前一个结点,然后创建结点指向所要删除的结点。
link *delElem(link *p,int add)
{
     link *temp=p;//创建一个临时结点用来遍历
     for(int i=1;inext;

      }
      link *c=temp->next;
      //创建一个结点来指向所要删除的结点
      temp->next=c->next;
      free(c);
      return p;


}
//搜索结点
int selectElem(link *p,int elem)
{
    link *temp=p;
    int i=1;
     while(temp->next)
     {
         temp=temp->next;
         if(temp->data==elem)
             return i;
     }
     return -1;
}
link *amendElem(link *p,int add,int newElem)
{
    link *temp=p;
     for(int i=1;inext;
     }
     link *amend=temp->next;//创建一个临时的结点用来指向被更改的结点
     amend->data=newElem;
     return p;
}
void display(link *p)
{
    link *temp=p;
    while(temp->next)
    {
        temp=temp->next;
        printf("%d  ",temp->data);
    }
    printf("\n");

}
int main()
{
    printf("初始化链表\n");
    link *p=initLink();
    display(p);
   printf("在第4的位置插入元素5:\n");
   p = insertElem(p, 5, 4);
   display(p);

    printf("删除元素3:\n");
    p = delElem(p, 3);
    display(p);

    printf("查找元素2的位置为:\n");
    int address = selectElem(p, 2);
    if (address == -1)
       printf("没有该元素\n");
   else printf("元素2的位置为:%d\n", address);
    printf("更改第3的位置的数为7:\n");
    p = amendElem(p, 3, 7);
    display(p);

   return 0;

}

 

版权说明| 关于ijava| 合作伙伴| 联系我们| 网站地图| 招贤纳士

Copyright © 2017 www.ijava.com All Rights Reserved 版权所有•ijava学习网 京ICP备14061482号-18         官方QQ:3325669927

ijava学习网提供免费java教程和大量java面试题库,给高级会员提供免费的java培训,同时提共一些java开发项目和java下载,java工程师,java菜鸟们快来哦。记住我们的网站:www.ijava.com