单链表的创建—数据结构算法

Posted honeynan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的创建—数据结构算法相关的知识,希望对你有一定的参考价值。

代码功能截图:

技术图片技术图片

源代码:

#include<stdio.h> // EOF(=^Z或F6),NULL
#include<stdlib.h> // srand( ) ,rand( ),exit(n)
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 100 //最大长度
typedef int Status;
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;


Status InitList(LinkList &L){
L = new LNode;
L ->next = NULL;
return OK;
}

void CreateList_h(LinkList &L,int n)
{

L =new LNode;
L ->next = NULL;
for(int i=0;i<n;++i)
{
LNode *p;
p=new LNode;
// printf("输入第%d个数据:",n);
// scanf("%d",&p->data);
cin>>p->data;
p->next = L->next;L->next=p; //这是前插法

}
}

Status GetElem(LinkList L,int i,ElemType &e){
LNode *p;
p = L->next;int j= 1;
while(p&&j<1)
{
p = p->next;
++j;
}
if (!p|| j>1) return ERROR;
e = p->data;
return OK;

}


LNode *LocateElem(LinkList L,ElemType e)
{
LNode *p;
int i = 0;
p = L->next;

while (p && p->data != e)
p=p->next;
i = i+1;
return p;
}

Status LinkInsert(LinkList &L,int i,ElemType e)
{
LNode *p;
p = L;int j = 0;
while(p&&(j<i-1))
{
p = p->next;
++j;
}
if (!p || j>i -1) return ERROR;
LNode *s;
s = new LNode;
s->data = e;
s->next=p->next;
p->next =s;
return OK;
}

Status LinkDelete(LinkList &L,int i)
{
LNode *p;
p = L;int j = 0;
while((p->next) &&(j < i-1))
{
p = p->next;++j;
}
if (!(p->next) || (j>i-1)) return ERROR;
LNode *q;
q = p->next;
p->next = q ->next;
delete q;
return OK;
}
void Find(LinkList L){
LNode *p = L->next;
int i=0;
while(p){
i++;
printf("第%d个节点数据域为%d ",i,p->data);
p = p->next;
}
}

注意这里没有写main()函数。获取源码请关注“指尖创意”微信公众号:建议用手机登录复制粘贴,最先版微信正在公测。

技术图片

 

技术图片

 

 

技术图片技术图片

以上是关于单链表的创建—数据结构算法的主要内容,如果未能解决你的问题,请参考以下文章

单链表的创建算法

python数据结构与算法之单链表

408数据结构与算法—单链表的基本操作

408数据结构与算法—单链表的基本操作

408数据结构与算法—单链表的基本操作

数据结构与算法学习笔记 线性表Ⅱ