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

代码功能截图:

源代码:

#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()函数。获取源码请关注“值南针”微信公众号:手机登录复制粘贴或微信电脑端(要最新版微信pc端),最先版微信正在公测。

选择号直接下载保存下来。

原文地址:https://www.cnblogs.com/honeynan/p/12215212.html