码迷,mamicode.com
首页 > 其他好文 > 详细

单链表的基本操作

时间:2018-12-10 22:04:09      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:include   \n   node   结构体   temp   --   link   family   return   

单链表的基本操作

单链表结构体声明

 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("请输入一个数-----\n");
 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("请输入一个数-----\n");
 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\t\t",p->data);
8     }
9 }

 

单链表的基本操作

标签:include   \n   node   结构体   temp   --   link   family   return   

原文地址:https://www.cnblogs.com/KYAOYYW/p/10099012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!