请大家帮忙用c语言编一个顺序表的源程序

请大家帮忙用c语言编一个顺序表的源程序,第1张

这个程序写了顺序表的初始化、插入、删除、遍历。

#include "stdioh"

#define MAXLEN 100

typedef int DataType;

typedef struct{

DataType data[MAXLEN];

int length;

}sqList;

void ListInit(sqList L){

L->length=0;

}

int ListInsert(sqList L,int i,DataType x){

int j;

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

return 0;

if(L->length==MAXLEN)

return 0;

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

L->data[j]=L->data[j-1];

L->data[i-1]=x;

L->length++;

return 1;

}

int ListDelete(sqList L,int i,DataType e){

int j;

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

return 0;

e=L->data[i-1];

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

L->data[i-1]=L->data[i];

L->length--;

return 1;

}

main()

{

sqList x;

int n,i,y;

ListInit(&x);

for(i=0;i<5;i++){

printf("请输入第%d个数:",i+1);

scanf("%d",&n);

xdata[i]=n;

}

xlength=i;

for(i=0;i<xlength;i++)

printf("%d ",xdata[i]);

printf("\n");

ListInsert(&x,4,7);

for(i=0;i<xlength;i++)

printf("%d ",xdata[i]);

printf("\n");

ListDelete(&x,5,&y);

for(i=0;i<xlength;i++)

printf("%d ",xdata[i]);

printf("\n");

}

除等于2外,在不同的情况下有不同的答案:

1、在二进制时。1+1=10;

2、布尔代数时。1+1=1;

3、作为代表时。如哥德巴赫猜想;

4、单位不同时。如1小时加1分等于61分;

5、在急转弯时。如1加1,答案是11;

6、特殊情况下。如一个男人加如一个孕妇等于三个人;

7、实际需要时。如一尺布加一斤米等于一袋米;

8、智力测验时。如一滴水加一滴水等于一滴水;

9、在猜字谜时。如一加一,答案是王;一加一等于,答案是田、由、甲、申等;

10。。。。。。。

11。。。。。。。

12。。。。。。。

13。。。。。。。

最佳答案

我写了一个完整的。程序试运行正常。运行效果如下图。

希望对您有帮助!

#include"stdioh"

#include "stdlibh"

int charu(int a[])

{

int n,i=0;

while(a[i]!=0)

i++;

printf("\n该数列长度为%d。\n",i);

printf("请输入要插入元素的位置n(n<=%d)(在第%d位插入即在末尾增加一个元素):\n",i+1,i+1);

while(1)

{

scanf("%d",&n);

if(n>=1&&n<=i+1)

break;

printf("请输入0-%d以内的数字:\n",i+1);

}

for(i=i-1;i>=n-1;i--)

a[i+1]=a[i];

printf("请输入要添加的数:\n");

scanf("%d",&a[n-1]);

printf("新数列为:\n");

for(i=0;a[i]!=0;i++)

printf("%d\t",a[i]);

return a[20];

}

void chazhao1(int a[])/顺序查找/

{

int n=0,num;

printf("请输入要查找的数:\n");

scanf("%d",&num);

for(int i=0;a[i]!=0;i++)

if(a[i]==num)

{

printf("第%d位为%d。\n",i,num);

n=n+1;

}

if(n==0)

printf("没找到该数!\n");

}

void chazhao2(int a[])/折半查找/

{

int num,set=0,end=0,i;

while(a[end]!=0)

end++;

end=end-1;

i=(set+end)/2;

printf("请输入要查找的数:\n");

scanf("%d",&num);

while(set<=end)

{

if(a[i]>num)

end=i-1;

else

if(a[i]<num)

set=i+1;

else break;

i=(set+end)/2;

}

if(set>end)

printf("没找到该数!\n");

else

printf("第%d位为%d。\n",i+1,num);

}

int paixu1(int a[])

{

int n=0;

for(int i=0;a[i]!=0;i++)

n=n+1;

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

{

for(int j=0;j<n-i;j++)

{

if(a[j]>a[j+1])

{

int t;

t=a[j];a[j]=a[j+1];a[j+1]=t;

}

}

}

printf("排序后的数列为:\n");

for(i=0;a[i]!=0;i++)

printf("%d\t",a[i]);

return a[20];

}

int paixu2(int a[])

{

int n=0;

for(int i=0;a[i]!=0;i++)

n=n+1;

int min;

for(i=0;i<n-1;i++)

{

min=i;

for(int j=i+1;j<n;j++)

if(a[j]<a[min])

min=j;

if(min!=i)

{

int t;

t=a[i];a[i]=a[min];a[min]=t;

}

}

printf("排序后的数列为:\n");

for(i=0;a[i]!=0;i++)

printf("%d\t",a[i]);

return a[20];

}

void xianshi(int a[])

{

for(int i=0;a[i]!=0;i++)

printf("%d\t",a[i]);

}

void screen()

{

printf("\n请选择:\n");

printf("1显示所有数\n");

printf("2插入一个数\n");

printf("3顺序查找一个数\n");

printf("4冒泡排序\n");

printf("5选择排序\n");

printf("6折半查找一个数(注意:折半查找只能在排序后使用)\n");

printf("7退出程序\n");

}

void main()

{

int a[20]={21,23,14,5,56,17,31,85,72};

int i;

printf("原数列为:\n");

for(i=0;a[i]!=0;i++)

printf("%d\t",a[i]);

printf("\n该数列长度为%d。\n",i);

int c;

while(1)

{

screen();

scanf("%d",&c);

switch (c)

{

case 1:xianshi(a);break;

case 2:a[20]=charu(a);break;

case 3:chazhao1(a);break;

case 4:a[20]=paixu1(a);break;

case 5:a[20]=paixu2(a);break;

case 6:chazhao2(a);break;

case 7:exit(0);

default :printf("输入的数字错误。\n请重新输入:\n");

}

continue;

}

}

建立方法很多,线性表是顺序表的顺序存储结构,这里我给你写个简单的例子参考一下,只要理解了,怎么写都不会错:

具体代码如下:

#include <stdioh>

typedef struct{

int data[100];

int length;

}Seqlist;//定义Seq这个新的数据类型

void creat(Seqlist &L);//建立线性表

void show(Seqlist L);//显示线性表

int main()

{

Seqlist L;

Llength=0;//初始化线性表的长度为0

creat(L);

show(L);

return 0;

}

void creat(Seqlist &L)

{

int a;

printf("请输入要创建的元素的个数:\t");

scanf("%d",&a);

for(int i=0;i<a;i++)

{

printf("请输入第%d个元素\t",i+1);

scanf("%d",&Ldata[i]);

Llength++;

}

}

void show(Seqlist L)

{

int i;

printf("线性表中的元素为:\n");

for(i=0;i<Llength;i++)

printf("%d\t",Ldata[i]);

printf("\n");

}

程序测试结果如下:

1、封面

2、编制说明

3、工程费用计算程序表

4、组织措施费项目表

5、工程预算书(分部分项 、技术措施)

6、主材单价表

这样很明确了吧,作用看各个表的名字就知道了,另外如果需要增加什么表格按那边自己要求来

以上就是关于请大家帮忙用c语言编一个顺序表的源程序全部的内容,包括:请大家帮忙用c语言编一个顺序表的源程序、C程序将顺序表的元素按升序排列,如输入1 3 5 7 9 2 4 6 8 0,排序后为0 -33686019 1 2 3 4 5 6 7 8、求高人帮编一个有关顺序表的C语言程序,望速回,非常感谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9869188.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存