汉扬编程 编程大纲 求构建一个线性表的完整程序 数据结构C语言版????

求构建一个线性表的完整程序 数据结构C语言版????

  /*~~~~~~~~~~~~~~~~~~顺序表存储结构及常见操作(seqlist。c)~~~~~~~~~~~~~~~~*/
#ifndef __SEQLIST__
#define __SEQLIST__
#include
/*顺序表存储空间长度的最小值*/
#define LISTMINSIZE 10
/*顺序表存储结构类型定义*/
typedef struct
{
ListDT *base; /*顺序表空间基地址*/
int listsize; /*顺序表空间尺寸*/
int len; /*顺序表长度*/
}SeqList;
/*顺序表初始化*/
void ListInitialize(SeqList *pL, int size)
{
if(sizelistsize=size;
pL->base=(ListDT *)malloc(pL->listsize*sizeof(ListDT));
if(!pL->base)
exit(EXIT_FAILURE);
pL->len =0; /*初始化空表*/
}
/*按给定的下标取顺序表元素值*/
BOOL ListElem(SeqList L, int index, ListDT *pelem)
{
BOOL flg=TRUE;
if(indexL。
  len-1 )
flg=FALSE; /*参数越界*/
else
*pelem=L。base[index];
return flg;
}
/*求顺序表长度*/
int ListLen(SeqList L)
{
return L。
  len;
}
/*在顺序表中指定序号位置插入元素*/
BOOL ListInsert(SeqList *pL, int pos, ListDT d)
{
BOOL flg=TRUE;
int i;
if(poslen>=pL->listsize || pos>pL->len)
flg=FALSE;
else
{
for(i=pL->len-1; i>=pos; i–) /*移动数据*/
pL->base[i 1]=pL->base[i];
pL->base[pos]=d; /*写入数据*/
pL->len ; /*表长增1*/
}
return flg;
}
/*把顺序表中指定序号的元素删除*/
BOOL ListDel(SeqList *pL, int pos)
{
BOOL flg=TRUE;
int i;
if(pos=pL->len)
flg=FALSE;
else
{
for(i=pos 1; i
len; i ) /*移动数据*/
pL->base[i-1]=pL->base[i];
pL->len–; /*表长增1*/
}
return flg;
}
/*在顺序表中查找元素*/
int ListLoc(SeqList L, ListDT d,BOOL (*equal)(ListDT, ListDT))
{
int pos=L。
  len-1;
while(pos>=0 && !(*equal)(L。base[pos],d))
pos–;
return pos;
}
/*取前导元素序号位置*/
BOOL ListPrior(SeqList L, int pos, int *ppriorpos)
{
BOOL flg=TRUE;
if(pos>0 && pos=0 && pos  len-1)
*pnextpos=pos 1;
else
flg=FALSE;
return flg;
}
/*销毁顺序表*/
void ListDestroy(SeqList L)
{
free(L。
  base);
}
#endif
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/*
建议性测试用程序
*/
typedef enum {TRUE=1,FALSE=0} BOOL;
typedef int ListDT;
#include \”seqlist。
  c\”
void printSeqList(SeqList L)
{
int i;
ListDT x;
printf(\”
List:
\”);
for(i=0; i {
ListElem(L,i,&x);
printf(\”=\”,x);
}
}
BOOL dataequal(int x, int y)
{
return (x==y)? TRUE:FALSE;
}
#define N 5
void main()
{
int i,prior,next;
ListDT x,test[N]={10,20,30,40,50};
SeqList L;
/*初始化顺序表*/
ListInitialize(&L,N);
/*在表头插入N个元素*/
for(i=0; i ListInsert(&L,0,test[i]);
printSeqList(L);
/*删除元素*/
ListDel(&L,N/2);
printSeqList(L);
printf(\”
input a key:
\”);
scanf(\”%d\”,&x);
/*查找x在表中位置*/
i=ListLoc(L,x,dataequal);
/*求x的前导元素*/
if(ListPrior(L,i,&prior))
{
ListElem(L,prior,&x);
printf(\”Prior:%d
\”,x);
}
else
printf(\”no Prior。
  
\”);
/*求x的后继*/
if(ListNext(L,i,&next))
{
ListElem(L,next,&x);
printf(\”Next:%d
\”,x);
}
else
printf(\”no Next。
  
\”);
/*求表长*/
printf(\”List length=%d\”,ListLen(L));
/*销毁顺序表*/
ListDestroy(L);
}。
  

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/5996.html

打基础之LeetCode算法题第47日:N叉树的层序遍历

数据结构C语言版冒泡排序的程序和应用,谁能帮我写一个。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部