单链表的基本操作
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 }
以上是关于单链表的基本操作的主要内容,如果未能解决你的问题,请参考以下文章