zoukankan      html  css  js  c++  java
  • 单链表基本操作的实现

    插入节点图解

     s->next = p->next;
        p->next = s;
    View Code

    创建节点

    1 typedef struct Lnode
    2 {
    3     ElemType data;
    4     struct Lnode * next;
    5 } Lnode,*LinkList;
    View Code

     单链表的进本操作

    1.创建链表

     1 LinkList creatList()
     2 {
     3     LinkList L = (LinkList)malloc(sizeof(Lnode));
     4     LinkList Ptai = L;
     5     Ptai->next=NULL;
     6     L->next = NULL;
     7 
     8     printf("input length:
    ");
     9     scanf("%d",&L->data);
    10 
    11     for(int i=1;i<=L->data;i++)
    12     {
    13         LinkList pnew = new Lnode;
    14         printf("input %d data
    ",i);
    15         scanf("%d",&pnew->data);
    16 
    17         Ptai->next = pnew;               //尾插法
    18         Ptai = pnew;
    19         Ptai->next = NULL;
    20     }
    21 
    22     return L;
    23 }
    View Code

    2.遍历链表

     1 void traverse(LinkList L)
     2 {
     3     LinkList p = L;
     4     while(p->next!=NULL)
     5     {
     6         printf("%d ",p->next->data);
     7         p=p->next;
     8     }
     9     printf("
    ");
    10 }
    View Code

     3.插入节点

    Status insertList(LinkList L,int local,ElemType &e)
    {
        if(local<1||local>(L->data+1))
        {
            printf("invalid input
    ");  //判断插入的未知是否有效
            return FALSE;
        }
    
        LinkList p = L;
        for(int i=1;i<local;i++)
        {
            p = p->next;       
        }
    
        LinkList s = new Lnode;
    
        s->data = e;
        s->next = p->next;
        p->next = s;
    
        L->data++;           //插入后长度加1
        return TRUE;
    
    }
    View Code

    4.删除节点

     1 Status deleteList(LinkList L,int pos)
     2 {
     3     if(pos<1||pos>L->data)
     4     {
     5         printf("invalid input
    ");
     6         return FALSE;
     7     }
     8 
     9     LinkList p = L;
    10     for(int i=1;i<pos;i++)
    11     {
    12         p = p->next;
    13     }
    14 
    15     p->next = p->next->next;
    16     L->data--;
    17 
    18     return TRUE;
    19 
    20 }
    View Code

    5.单链表的取值

     1 int getVal(LinkList L,int pos)
     2 {
     3     if(pos<1||pos>L->data)
     4     {
     5         printf("invalid input
    ");   //判断查找的位置是否合理
     6         return 0;
     7     }
     8 
     9     LinkList p = L;
    10     for(int i=1;i<pos;i++)
    11     {
    12         p = p->next;
    13     }
    14 
    15     return p->next->data;      //返回查找的值
    16 }
    View Code

    6.单链表的查找

     1 int getPos(LinkList L,ElemType val)
     2 {
     3     LinkList p = L;
     4     for(int i=1;i<=L->data;i++)
     5     {
     6         p = p->next;
     7         if(p->data==val)
     8         {
     9             return i;                //返回值的位置
    10         }
    11 
    12         if(i==L->data)
    13         {
    14             return 0;                //若没找到,返回0
    15         }
    16     }
    17 }
    View Code
  • 相关阅读:
    git上刚下载的项目就显示有改动
    Windows Server 2012 R2安装Oracle 11g问题
    maven项目更换本地仓库
    dom4j创建和解析xml文档
    java倒计时三种简单实现方式
    JS倒计时两种种实现方式
    java加载properties文件的六中基本方式实现
    MYSQL 高级语法
    MYSQL 基础语法
    Sql 代码规范说明
  • 原文地址:https://www.cnblogs.com/wwww2/p/11621589.html
Copyright © 2011-2022 走看看