单链表基本操作的实现

Posted wwww2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表基本操作的实现相关的知识,希望对你有一定的参考价值。

插入节点图解

技术图片

技术图片
 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:\\n");
 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\\n",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("\\n");
10 
View Code

 

 3.插入节点

技术图片
Status insertList(LinkList L,int local,ElemType &e)

    if(local<1||local>(L->data+1))
    
        printf("invalid input\\n");  //判断插入的未知是否有效
        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\\n");
 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\\n");   //判断查找的位置是否合理
 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

 

以上是关于单链表基本操作的实现的主要内容,如果未能解决你的问题,请参考以下文章

用Java实现单链表的基本操作

Java实现单链表(步骤详解+源码)

单链表基本操作

数据结构单链表的介绍和基本操作(C语言实现)保姆级别详细教学

单链表基本操作的实现

单链表的基本操作实现