运用c++语言打出数据结构中的静态链表代码,仅供参考
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了运用c++语言打出数据结构中的静态链表代码,仅供参考,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2613字,纯文字阅读大概需要4分钟。
内容图文
![运用c++语言打出数据结构中的静态链表代码,仅供参考](/upload/InfoBanner/zyjiaocheng/813/33cf5bfea0564874b4b37d578815f18e.jpg)
这个也算是较为简单的一种数据结构思想了,是古人们没有指针时候用的,虽然很古老,但是很实用,不如哈夫曼树的时候用这个就明显比指针好用的多,不废话,直接上代码。
里面有很多注释的内容是我用来测试代码的,不用管,但也可以将其放出来更好的理解代码。
#include
using namespace std;
#define MAXSIZE 1000
#define OK 1
#define Status int
#define Elemtype char
#define ERROR -1
static int length=0;
typedef struct
{
Elemtype data;//数据
int cur;//游标
}Compenent,StaticLinkList[MAXSIZE];//结构体类型数组
Status InList(StaticLinkList L)
{
for(int i=1;i<MAXSIZE-1;i++)
{
L[i].cur=i+1;
}
L[0].cur=0;
L[MAXSIZE-1].cur=0;
return OK;
}//静态链表的初始化=-=
Status StudyList(StaticLinkList L)
{
int j=1;
int i=1;
while(i)
{
length+=1;
cin>>L[j].data;
j++;
cout<<“如果你想要停止输入,请输入0,想继续输入数据请输入1。”<<endl;
int k;
cin>>k;
i=k;
}
L[j-1].cur=0;
L[0].cur=j;//第零个用来存储第一个没存数据的下标
L[MAXSIZE-1].cur=1; //最后一个用来存储第一个存取数据的下标
return OK;
}
int Malloc_SLL(StaticLinkList L)
{
int i=L[0].cur;
if(L[0].cur)
{
L[0].cur=L[i].cur;
}
return i;
}//返回第一个未赋值的下标
Status ListInsert(StaticLinkList L,Elemtype e,int m)//将该数据插到第m个位置
{
int j,k,l;
k=MAXSIZE-1;
if(m<1||m>length+1)
return ERROR;//判断m是否符合输入规定
if(m==length+1)
{
L[length].cur=L[0].cur;
j=Malloc_SLL(L);
L[j].cur=0;
}//判断是否在末尾加一个。最后一个值的游标必须为0
j=Malloc_SLL(L);
if(j)
{
L[j].data=e;
// cout<<"="<<endl;
// cout<<L[j].data<<endl;
// cout<<j<<endl;
// cout<<""<<endl;
for(l=1;l<m;l++)
{
k=L[k].cur;
}
L[j].cur=L[k].cur;
L[k].cur=j;
length++;
if(m==L[MAXSIZE-1].cur)
{
L[MAXSIZE-1].cur=j;
}
return OK;
}
return ERROR;
}
Status Free_SLL(StaticLinkList L,int j)
{
L[j].cur=L[0].cur;
L[0].cur=j;
}
Status ListDelete(StaticLinkList L,int i)//删除第i个元素
{
int j,k;
if(i<1||i>length)
{
return ERROR;
}
k=MAXSIZE-1;
// cout<<i<<endl;
// cout<<length<<endl;
int m=1;
if(i==length)
{
for(m=1;m<=i-1;m++)
{
k=L[k].cur;
}
j=L[k].cur;
L[k].cur=0;
Free_SLL(L,j);
length--;
return OK;
}
if(i==L[MAXSIZE-1].cur)
{
L[MAXSIZE-1].cur=L[i].cur;
Free_SLL(L,i);
length--;
return OK;
}
for(j=1;j<i;j++)
{
k=L[k].cur;
}
j=L[k].cur;
L[k].cur=L[j].cur;
Free_SLL(L,j);
length--;
return OK;
}
Status out(StaticLinkList L)
{
int k;
k=L[MAXSIZE-1].cur;
while(k)
{
cout<<L[k].data;
k=L[k].cur;
}
cout<<endl;
return OK;
}
int main()
{
StaticLinkList L;
InList(L);
cout<<"----------初始化------------"<<endl;
StudyList(L);
out(L);
cout<<"-----------赋值---------------"<<endl;
char test='f';
ListInsert(L,test,1);
out(L);
cout<<"-----------插入---------------"<<endl;
ListDelete(L,1);
out(L);
cout<<"-----------删除---------------"<<endl;
return 0;
}
内容总结
以上是互联网集市为您收集整理的运用c++语言打出数据结构中的静态链表代码,仅供参考全部内容,希望文章能够帮你解决运用c++语言打出数据结构中的静态链表代码,仅供参考所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。