c 数据结构 静态链表-C语言静态链表问题,vc下为什么会编译不通过呢?

问题描述

C语言静态链表问题,vc下为什么会编译不通过呢?

#include
#include
#include
#define NULL 0
#define Maxsize 100
typedef int elemtype,status;
typedef struct
{
int cur;
elemtype data;
}component,SLinkList[Maxsize];/*SLinkList是一个结构体数组*/
void Initspace_SL(SLinkList &space)/*将一维数组space中各分量链成一个备用链表 /
{
int i;
for(i=0;i<Maxsize-1;i++)
space[i].cur=i+1;
space[Maxsize-1].cur=0;
}
int LocateElem(SLinkList &space,int e)/
在静态的单链线性表中查找第一个值为e的元素*/
{
int i;
i=space[0].cur;
while(i&&space[i].data!=e)
i=space[i].cur;
return i;
}
int Malloc_SL(SLinkList &space)/*若备用空间链表非空,则返回分配的结点下标*/
{
int i;
i=space[0].cur;
if(space[0].cur)
space[0].cur=space[i].cur;
return(i);
}
status Insert_SLinkList(SLinkList &space,int i,elemtype e)/*在静态单链表中第i个位置之前插入一个元素e*/
{
int j=1,m;
while(j<i-1)
j=space[j].cur;
m=Malloc_SL(space);
space[m].data=e;
space[m].cur=space[j].cur;
space[j].cur=m;
return 1;
}
void free(SLinkList &space,int k)/*将下标为k的空闲结点回收到备用链表*/
{
space[k].cur=space[0].cur;
space[0].cur=k;
}
status Delet_SL(SLinkList &space,int i,elemtype e)/*删除静态单链表中第i个元素并用e返回其值*/
{
int j=1,k=Maxsize-1;
for(j=1;j<i;j++)
k=space[k].cur;
j=space[k].cur;
space[k].cur=space[j].cur;
e=space[j].data;
free(space,j);
return e;
}
void main()/*还有求链表长度,以及求链表前驱后继的函数以后有空再写*/
{
SLinkList La;
int length,i,e;
printf("请输入链表的长度:n");
scanf("%d",&length);
Initspace_SL(La);
printf("请输入链表的元素:n");
for(i=0;i<length;i++)
scanf("%d",&La[i].data);
printf("请输入要删除元素的位置:n");
scanf("%d",&i);
e=Delet_SL(La,i,e);
printf("要删除的元素的值是:%dn",e);
printf("请输入要插入元素的位置:n");
scanf("%d",&i);
printf("要插入的元素的值是:n");
scanf("%d",&e);
Insert_SLinkList(La,i,e);
for(i=0;i<length;i++)
printf("%d ",La[i].data);
}
这个是完全按照严尉敏的数据结构课程中关于静态链表写的程序,请教大神为什么编译会出错,提示语法有问题?看了很多遍了,好像是没有呀。

解决方案

首先#include后面怎么会没有东西呢,这样无法调用函数库;还有就是void Initspace_SL(SLinkList &space)等用到&符号的地方,&在此为引用(C++的用法),所以不能这么写,必须改来用指针,建议再找其他的数据结构看看,当初看严尉敏的数据结构就看的挺蒙的

时间: 2024-08-30 00:46:34

c 数据结构 静态链表-C语言静态链表问题,vc下为什么会编译不通过呢?的相关文章

单链表-c语言单向链表的问题???

问题描述 c语言单向链表的问题??? #include<stdio.h>#include<stdlib.h>struct node{ int num; struct node *next;};//构建空的链表struct node* InitList(struct node *L){ L = (struct node*)malloc(sizeof(struct node)); L = NULL; printf_s(""InitList sucess!"

C语言静态链表和动态链表_C 语言

1. 静态链表 结构体中的成员可以是各种类型的指针变量,当一个结构体中有一个或多个成员的基类型是本结构体类型时,则称这种结构体为"引用自身的结构体".如: struct link { char ch; struct link *p; } a; p是一个可以指向 struct link 类型变量的指针成员.因此,a.p = &a 是合法的表达式,由此构成的存储结构如图1所示. 图1 引用自身的结构体 例1 一个简单的链表 #include <stdio.h> stru

C语言单向链表的表示与实现实例详解_C 语言

1.概述: C语言中的单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. 链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域.这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值. 如下图所示: 一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接 一个单向链表的节点被分成两个部分.第一个部分保存或者显示关于节点的信息,第二个部分存储下一个节点的地址.单向链表只可向一个方向遍历. 链表最基本的结构是在每个节点

C++之类的静态变量_C 语言

成员变量 通过对象名能够访问public成员变量 每个对象都可以有只属于自己的成员变量 成员变量不能在对象之间共享 类的静态成员 静态成员变量 存储在 全局数据区 #include<stdio.h> class Test { private: ///静态成员变量访问权限 static int c1; public: static int GetC1() { return c1; } static void SetC1(int i) { c1=i; } void print() //普通成员函数

c语言-线性链表数据结构的插入与删除

问题描述 线性链表数据结构的插入与删除 在你自己的文件下,建立一个C语言程序SL.C,完成下列要求: 1. 定义长度为10的数组,输入9个数据(1,3,4,5,7,9,12,20,28),然后输出这九个数组元素的存储单元地址和相应的数值: 2. 建立一个数组元素的插入函数,能够按照数据从小到大的次序自动找到插入位置完成插入元素的操作,调用此函数插入数据15,然后输出数值元素的存储单元地址和相应的数值: 3. 建立一个数组元素的删除函数,能够按照数据自动删除指定元素的操作,调用此函数删除数据值为9

数据结构 链表 c语言 简单问题

问题描述 数据结构 链表 c语言 简单问题 正在学习数据结构 有个问题想问一下 下面的代码中为什么 pt == NULL 就说明列表满? //如果列表满则返回真 bool ListIsFull (const List * plist) { Node * pt; bool full; pt = (Node *)malloc(sizeof (Node)); if (pt == NULL) full = true; else full = false; free (pt); return full;

Java语言中链表和双向链表的实现

链表是一种重要的数据结构,在程序设计中占有很重要的地位.C语言和C++语言中是用指针来实现链表结构的,由于Java语言不提供指针,所以有人认为在Java语言中不能实现链表,其实不然,Java语言比C和C++更容易实现链表结构.Java语言中的对象引用实际上是一个指针(本文中的指针均为概念上的意义,而非语言提供的数据类型),所以我们可以编写这样的类来实现链表中的结点. class Node { Object data; Node next;//指向下一个结点 } 将数据域定义成Object类是因为

C语言之链表

这两天在复习C语言的知识,为了给下个阶段学习OC做准备,以下的代码的编译运行环境是Xcode5.0版本,写篇博文把昨天复习的C语言有关链表的知识给大家分享一下,以下是小菜自己总结的内容,代码也是按照自己的思路所编写的,有不足之处还请大牛们批评指教. 确切的说链表属于数据结构中线性表中的内容,在链表中存储的内容是按线性排列的,就像是一条线把所要存的数据串起来,可以把链表类比成一串珠子,数据就是一个个的珠子,数据间的next指针就相当于穿珠子的线. 链表操作的时间复杂度: 往链表中插入数据的时间复杂

一个c语言单向链表,编译通过,运行结果却不知所谓,请求帮助

问题描述 一个c语言单向链表,编译通过,运行结果却不知所谓,请求帮助 这段代码在rhel6中用gcc编译通过,运行结果未定义,其中作的链表按number大小排序打印出来是没有排过序的结果,而且输入记录多了,其中某些项的number打印出来会由输入的值变成0或者一个莫名其妙的整数. vs2008中编译通过,打入多项记录只能显示2条,而且前一条是乱码. 最简单的一个数据结构,却忙了半天还查不出原因,帮个忙吧-_-||| 原代码: /*简单单向链表,输入学生名称和号码,按号码排序, 如果号码相同则记录