日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...

發(fā)布時間:2024/9/27 编程问答 30 豆豆

#include

#define MAXSIZE 20

typedef int ElemType;

typedef struct

{

ElemType elem[MAXSIZE];

int length;

}SqList;//順序表結(jié)構(gòu)定義void InitList(SqList &L)

{

//初始化函數(shù)//操作結(jié)果:構(gòu)造一個空在順序線性表 L.length=0;

return;

}

void ClearList(SqList &L)

{

//清表函數(shù)//操作結(jié)果:將L置為空表 L.length=0;

return;

}

int ListLength(SqList L)

{

//求表長函數(shù)//操作結(jié)果:返回表中元素個數(shù) return L.length;

}

int ListEmpty(SqList L)

{

//判空函數(shù)//初始條件:順序線性表L已存在//操作結(jié)果:如果不空返回0,否則返回非0值 if(L.length==0)return 1;

else

return 0;

}

/int GetElem(SqList L,int i,ElemType &e)

{

//取元素函數(shù)//初始條件:順序線性表L已存在,1<=i<=ListLength(L)//操作結(jié)果:用e返回L中第i個元素的值 if(i<1||i>L.length)

{

printf("i值越界!\n");

return 0;

}

e=L.elem[i-1];

return 1;

}

int LocateElem(SqList L,ElemType e)

{

//定位函數(shù)//初始條件:順序線性表L已存在,e為指定的查找元素//操作結(jié)果:返回L中第1個與e相等的元素位序,若這樣在元素不存在,則返回0 int i=0;

while(i

++i;

if(i<=L.length)

return i;

else

return 0;

}

int PriorElem(SqList L,ElemType cur_e,ElemType &pre_e)

{

//求前驅(qū)函數(shù)//初始條件:順序表已存在//操作結(jié)果:若存在元素cur_e,且是第一個元素,返回0;若不是第一個元素,則返回前驅(qū)元素的值 int i;

i=LocateElem(L,cur_e);

if(i)

{

// if(i==1)

{

printf("這是第一個元素,沒有前驅(qū)!!!\n");

return 0;//操作失敗 }

else

{

pre_e=L.elem[i-1];

return 1;

}

}

else

{

printf("中不存在此元素!\n");

return 0;//操作失敗 }

}

int NextElem(SqList L,ElemType cur_e,ElemType &next_e)

{

//求后繼函數(shù)//初始條件:順序表已存在//操作結(jié)果:若存在元素cur_e,且是最后一個元素,返回0;若不是最后一個元素,則返回后繼元素的值 int i;

i=LocateElem(L,cur_e);

if(i)

{

// if(i==L.length-1)

{

printf("這是最后一個元素,沒有后繼!!!\n");

return 0;//操作失敗 }

else

{

next_e=L.elem[i+1];

return 1;

}

}

else

{

printf("不存在此元素!\n");

return 0;//操作失敗 }

}

int ListInsert(SqList &L,int i,ElemType e)

{

//插入函數(shù)//初始條件:順序線性表L已存在,1<=i<=ListLength(L)+1//操作結(jié)果:在L中第i個位置前插入新的數(shù)據(jù)元素e,L的長度加1 int j;

if(i<1||i>L.length+1)

{

printf("插入越界!\n");

return 0;//插入失敗 }

if(L.length>=MAXSIZE)

{

printf("順序上溢!\n");

return 0;//插入失敗 }

for(j=L.length-1;j>=i-1;--j)

{

L.elem[j+1]=L.elem[j];

}

L.elem[i-1]=e;

++L.length;

return 1;//成功插入}

int ListDelete(SqList &L,int i,ElemType &e)

{

int j;

if(i<1||i>L.length)

{

printf("i值越界!");

return 0;//操作失敗 }

if(ListEmpty(L))

{

printf("L為空表,不能執(zhí)行刪除操作!\n");

return 0;//操作失敗 }

e=L.elem[i-1];

for(j=i;j<=L.length-1;j++)

{

L.elem[j-1]=L.elem[j];

}

L.length--;

return 1;//操作成功}//void ListTraverse(SqList L)

{

//輸出函數(shù)//初始條件:順序表衣襟存在//操作結(jié)果:若順序表非空,則輸出順序表中所有元素,否則為空操作 int i;

for(i=0;i

{

printf("%5d",L.elem[i]);

}

return;

}

int main(void)

{

SqList L;

int i,s,e;

InitList(L);/創(chuàng)建一個空的順序表L if(ListEmpty(L))

{

printf("順序表L是一個空表!\n");

}

else

{

printf("順序表L不是一個空表!\n");

}

///if語句的輸出結(jié)果為: printf("\n1~10:\n");

for(i=1;i<=10;i++)

{

ListInsert(L,1,i);///調(diào)用插入函數(shù) }

ListTraverse(L);///輸出結(jié)果為: printf("\n刪除指定的元素(輸入序號):");

scanf("%d",&i);

ListDelete(L,i,e);

printf("\n刪除的第%d個元素的值為%d\n",i,e);

printf("\n刪除后元素后順序表中的元素值為:\n");

ListTraverse(L);

printf("\n查找前驅(qū)操作:\n");

printf("\n輸入元素:");

scanf("%d",&s);

if(!PriorElem(L,s,e))

{

printf("\n元素%d沒有前驅(qū)!\n",s);

}

else

{

printf("\n元素%d的前驅(qū)為:%d\n",s,e);

}

printf("\n查找后繼元素操作:\n");

printf("\n輸入元素:\n");

scanf("%d",&s);

if(!NextElem(L,s,e))

{

printf("\n元素%d沒有后繼!\n",s);

}

else

{

printf("\n元素%d的后繼為:%d\n",s,e);

}

/*printf("\n\n");

printf("");

scanf("%d",&s);

if(!NextElem(L,s,e))

{

printf("\n%\n",s);

}

else

{

printf("\n%d%d\n",s,e);

}*/

printf("\n");

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。