单链表的基本操作

Posted kyaoyyw

tags:

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

单链表的基本操作

单链表结构体声明

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define OK 1
 4 #define ERROR 0
 5 typedef int Status;
 6 typedef int ElementType;
 7 typedef struct sqlist
 8 {
 9     ElementType data;
10     struct sqlist *next;
11 }*LinkList,Node;

单链表初始化

1 Status InitList(LinkList &s)
2 {
3     s=new Node;
4     s->next=NULL;
5     return OK;
6 }

单链表添加(前插法)

 1 Status addList(LinkList &s,int n)
 2 {   
 3     int i=0;
 4     LinkList p=s;
 5     for(int j=0;j<n;j++)
 6     {
 7     LinkList temp=new Node;
 8     printf("请输入一个数-----
");
 9     scanf("%d",&i);
10     temp->data=i;
11     temp->next=s->next;
12     p->next=temp;
13     }
14     return OK;
15 }

单链表添加(后插法)

 1 Status addLists(LinkList &s,int n)
 2 {
 3     int i=0;
 4     LinkList p=s;
 5     for(int j=0;j<n;j++)
 6     {
 7     LinkList p1=new Node;
 8     printf("请输入一个数-----
");
 9     scanf("%d",&i);
10     p1->data=i;
11     p1->next=NULL;
12     p->next=p1;
13     p=p1;
14     }
15     return OK;
16 }

单链表取值

 1 int getList(LinkList s,ElementType e)
 2 {
 3     int j=0;
 4     LinkList p=s;
 5     if(!p->next)
 6     {
 7         return ERROR;
 8     }
 9     while(p->next)
10     {
11         p=p->next;
12         if(p->data==e)
13         {
14             return j+1;
15         }
16             ++j;
17     }
18     if(p->next==NULL)
19     {
20        return ERROR;
21     }
22 }

单链表查询(根据索引查询元素值)

 1 ElementType findList(LinkList s,int i,ElementType &e)
 2 {
 3     LinkList p=s;
 4     int j=0;
 5     if(!p->next)
 6     {
 7         return ERROR;
 8     }
 9     while(p->next)
10     {
11         j++;
12         p=p->next;
13         if(j==i)
14       {
15         e=p->data;
16         return e;
17        }
18      }
19     if(j<i)
20     {
21         return ERROR;
22     }
23 }

单链表插入

 1 Status insertList(LinkList &s,int i,ElementType e)
 2 {
 3     int j=0;
 4     LinkList p1=s;
 5     LinkList p=new Node;
 6     while(p1->next)
 7     {
 8         j++;
 9         p1=p1->next;
10         if(j==i)
11         {
12             p->data=e;
13             p->next=p1->next;
14             p1->next=p;
15         }
16     }
17     return OK;
18 }

单链表删除

 1 Status delList(LinkList &s,int i)
 2 {
 3     int j=1;
 4     LinkList q=new Node;
 5     LinkList p=s->next;
 6     while(p)
 7     {
 8         j++;
 9         q=p;
10         p=p->next;
11         if(j==i)
12         {
13             q->next=p->next;
14             free(p);
15             p=NULL;
16         }
17     }
18     return OK;
19 }

单链表显示

1 void show(LinkList s)
2 {
3     LinkList p=s;
4     while(p->next)
5     {
6         p=p->next;
7         printf("%d		",p->data);
8     }
9 }

 

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

单链表的基本操作操作,类C语言

单链表

单链表的基本实现

数据结构 单链表的简单理解和基本操作

考研数据结构之单链代码

考研数据结构之单链代码