数据结构c语⾔版如何运⾏程序,数据结构c语⾔怎么运⾏啊⾸先要确定你想采⽤线性表的顺序存储结构还是链式存储结构。
以顺序存储结构为例:
#include
#include
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;//顺序表测试⽤
const int MaxSize=100; //100只是⽰例性的数据,可以根据实际问题具体定义
const int Increasement=10;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SeqList;
Status InitList(SeqList &S,int n=MaxSize)
{//初始化线性表
if(n<=0)
n=MaxSize;
S.elem =(ElemType *)malloc(n*sizeof(ElemType));
if(S.elem ==NULL)
exit(ERROR);
S.length =0;
S.listsize =n;
return OK;
}
int ListLength(SeqList &S)
{ //求线性表的长度
return S.length ;
}
void GetElem(SeqList &S,int i,ElemType &e)
{//按位查,取线性表的第i个元素
e=S.elem [i-1];
}
Status ListInsert(SeqList &S,int i, ElemType e)
{ //在线性表中第i个位置插⼊值为e的元素
if(i<1 || i>S.length+1 )
return ERROR;
if(S.length >=S.listsize )
{
ElemType *newbase=(ElemType *)realloc(S.elem,Increasement*sizeof(ElemType)); if(newbase==NULL)
exit(ERROR);
S.elem =newbase;
S.listsize =S.listsize+Increasement;
}
for(int j=S.length -1;j>=i-1;j--)
S.elem [j+1]=S.elem [j];
S.elem [i-1]=e;
S.length++;
return OK;
}
Status Output(SeqList S)
{//遍历线性表,按序号依次输出各元素
if(S.length ==0)
return ERROR;
for(int i=0;i
printf("%d\t",S.elem[i]);
printf("\n");
return OK;
}
void BinInsertSort(int r[ ], int n)
{//折半插⼊排序
int low,high,mid;
{
e=r[i];
low=0; high=i;
while (low<=high)
{
mid=(low+high)/2;
if (e
high=mid-1;
else low=mid+1;
}
for (int j=i-1; j>=high+1; j--)
r[j+1]=r[j];
r[high+1]=e;
}
}
void MergeList(SeqList La, SeqList Lb, SeqList &Lc) {
// 已知顺序表La和Lb中的元素按值⾮递减排列。
// 归并La和Lb得到新的顺序表Lc,Lc的元素也按值⾮递减排列。int La_len, Lb_len;
ElemType ai, bj;
int i=1, j=1, k=0;
InitList(Lc);
La_len = ListLength(La);
Lb_len = ListLength(Lb);
while ((i <= La_len) && (j <= Lb_len)) { // La和Lb均⾮空GetElem(La, i, ai);
GetElem(Lb, j, bj);
if (ai <= bj) {
ListInsert(Lc, ++k, ai);
++i;
} else {
ListInsert(Lc, ++k, bj);
c语言listinsert函数}
}
while (i <= La_len) {
GetElem(La, i++, ai); ListInsert(Lc, ++k, ai); }
while (j <= Lb_len) {
GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj); }
} // MergeList
void main()
{
SeqList La,Lb,Lc;
InitList(La,3);
InitList(Lb,5);
ElemType data;
printf("输⼊顺序表La的元素值:\n");
for(int i=1;i<=3;i++)
{
scanf("%d",&data);
ListInsert(La, i, data);
}
fflush(stdin);
printf("输⼊顺序表Lb的元素值:\n");
for(i=1;i<=5;i++)
{
scanf("%d",&data);
ListInsert(Lb, i, data);
}
//La和Lb⾮递减排序
BinInsertSort(La.elem , 3);
BinInsertSort(Lb.elem , 5);
MergeList(La,Lb,Lc);
Output(Lc);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论