顺序表的初始化
发布网友
发布时间:2023-05-17 05:15
我来回答
共2个回答
热心网友
时间:2023-09-12 09:18
仔细看哦,这个东东花了鄙人不少时间
#include<stdio.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int len;
}SqList;
// 初始化线性表运算
void InitList(SqList *sq)
{
(*sq).len=0;
}
// 求线性表长度运算
int GetLength(SqList sq)
{
return sq.len;
}
// 求线性表中的第i个元素的运算
int GetElem(SqList sq,int i)
{
if(i<1||i>sq.len)
return 0;
else return sq.data[i-1];
}
// 按值查找运算
int Locate(SqList sq,int x)
{
int i=0;
while (sq.data[i]!=x) i++;
if(i>sq.len) return 0;
else return i+1;
}
// 插入元素运算
int InsElem(SqList *sq,int x,int i)
{
int j;
if(i<1||i>(*sq).len+1)
return 0;
for(j=(*sq).len;j>i-1;j--)
(*sq).data[j]=(*sq).data[j-1];
(*sq).data[i-1]=x;
(*sq).len++;
return 1;
}
// 删除元素运算
int DelElem(SqList *sq,int i)
{
int j;
if(i<1||i>(*sq).len)
return 0;
for(j=i;j<(*sq).len;j++)
(*sq).data[j-1]=(*sq).data[j];
(*sq).len--;
return 1;
}
//输出元素值运算
void DispList(SqList sq)
{
int i;
for(i=0;i<sq.len;i++)
printf("%d ",sq.data[i]);
printf("\n");
}
int main()
{
SqList list,*p;
SqList list2={{1,2,3,4},4};
DispList(list2);
p=&list;
InitList(p);
list.data[0]=12;
list.data[1]=9;
list.data[2]=23;
list.data[3]=45;
list.data[4]=56;
list.data[5]=8;
list.len=6;
printf("%d\n",InsElem(p,5,1));
printf("%d\n",InsElem(p,453,5));
DispList(list);
printf("%d",DelElem(p,5));
DispList(list);
printf("%d\n",Locate(list,9));
printf("%d\n",GetElem(list,10));
printf("%d\n",GetLength(list));
return 0;
}追问我要的是C++的 数据结构书上的那种
热心网友
时间:2023-09-12 09:19
你所说的顺序表就是指单向链表吧。举个例子:%D%A声明:typedef struct queue{%D%A int data;%D%A struct queue * next;%D%A }queuetype; //定义结构体类型%D%Atypedef queuetype * pqueuetype; //定义结构体指针类型%D%Apqueuetype front,rear; //声明链表头指针和尾指针%D%A操作:%D%Avoid queueinital(){%D%A front=NULL;%D%A rear=NULL; }%D%A这一段函数就是所谓的单向链表的初始化,即将链表头指针和尾指针都赋值为空而已。如果你指的是将链表各个单元中的所有数据初始化,那需要先明白一个问题,链表各单元并不是先申请空间再等待你输入值的,而是,你有一个值,程序申请空间,然后将值写入。看一下下面的入队函数:%D%Avoid inqueue(int x){%D%Apqueuetype p=(pqueuetype)malloc(sizeof(queuetype));%D%Ap->data=x;%D%Ap->next=NULL;%D%Aif(rear==UNLL){%D%A rear=p;%D%A front=p;%D%A}%D®lse{%D%A rear->next=p;%D%A rear=p;}%D%A}%D%A}%D%A通过这个入队函数,将值写入链表,链表根据你写入值的多少一个个申请空间,改变长度,通过所有指针将所有数据单元相连。实现单向顺序链表结构。