成都创新互联网站制作重庆分公司

顺序表插入函数C语言 顺序表的建立c语言

c语言顺序表的输入函数

建立方法很多,线性表是顺序表的顺序存储结构,这里我给你写个简单的例子参考一下,只要理解了,怎么写都不会错:具体代码如下: #include typedef struct{ int data[100]; int length; }Seqlist;//定义Seq这个新的数据类型 void creat(Seqlist L);//建立线性表 void show(Seqlist L);//显示线性表 int main() { Seqlist L; L.length=0;//初始化线性表的长度为0 creat(L); show(L); return 0; } void creat(Seqlist L) { int a; printf("请输入要创建的元素的个数:\t"); scanf("%d",a); for(int i=0;i

成都创新互联公司网站建设由有经验的网站设计师、开发人员和项目经理组成的专业建站团队,负责网站视觉设计、用户体验优化、交互设计和前端开发等方面的工作,以确保网站外观精美、成都做网站、成都网站制作、成都外贸网站建设易于使用并且具有良好的响应性。

C语言数据结构关于顺序表插入的问题

1、insert函数修改如下,

int insert(int x,int y, student *p1,student *p2)

{

int i,j,n;

student *p,*p3;

i=y;

n=x;

p=p1;

p3=p2;

if(i1||in)

{

printf("插入位置输入错误!\n");

return 0;

}

if(n=M)

{

printf("空间已满!\n");

return -1;

}

else

{ //下面语句都要在大括号之内哦

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

{stu[j+1]=stu[j];} //循环体执行后,先执行j--,然后跳出循环

*(p3+j+1)=*p; // j要+1才是真正要插入位置

return 1; //返回语句要放在最后哦

}

}

2、lookfor修改如下

void lookfor(int y,student *v1,int x)

{

student *p2;

int i,n,k;

int good = 0; //找到标志

k=y;

p2=v1;

n=x;

for(i=0;in;i++) //初值错误

{

if(k==(p2+i)-stu_number) //判断语句错误

{

printf("姓名:%s\n",stu[i].name );

printf("学号:%d\n",stu[i].stu_number);

printf("计算机成绩:%d\n",stu[i].stu_computer_grade );

printf("数学成绩:%d\n",stu[i].stu_math_grade );

printf("英语成绩:%d\n",stu[i].stu_english_grade );

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

good = 1; //找到标志

}

if (good == 0) //如果没有找到

{

printf("No fond!");

}

}

}

3、listdelete 修改

void listdelete(int x,int y,student *v)

{

int i,j,n;

student *p;

i=x;

n=y;

p=v;

if(i0||in)

printf("删除点错误!\n");

for(j=i-1;jn;j++) //初值错误

stu[j]=stu[j+1];

}

修改后程序已在VC中调试,没有内存错误

C语言线性顺序表的插入和删除

#include"stdio.h"

#include"malloc.h"

#include"iostream.h"

typedef int status;

typedef int elementype;

#define INITSIZE 100

#define INCREMENT 2

struct sqlist

{

elementype *elem;

int length;

int listsize;

};

//建立链表,并排列数据

status listinit(sqlist l)

{

int i=0,x,j,t;

l.elem=(elementype *)malloc(INITSIZE*sizeof(elementype));

if(!l.elem)

{

cout"建表失败"endl;

return 0;

}

l.length=0;

l.listsize=INITSIZE;

while(1)

{

cout"请输入数据(输入0时结束):";

cinx;

if(x==0) break;

l.elem[i]=x;

++l.length;

i++;

}

for(i=0;il.length-1;i++)

for(j=0;jl.length-i-1;j++)

if(l.elem[j]l.elem[j+1])

{

t=l.elem[j+1];

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

l.elem[j]=t;

}

cout"排序成功"endl;

return 1;

}

//插入数据

status listinsert(sqlist l,int i,elementype e)

{

elementype *p,*q,*newbase;

if(i1||il.length)

{

cout"i输入错误"endl;

return 0;

}

if(l.length=l.listsize)

{

newbase=(elementype*)realloc(l.elem,(l.listsize+INCREMENT)*sizeof(elementype));

if(!newbase)

{

cout"申请空间失败"endl;

return 0;

}

l.elem=newbase;

l.listsize=l.listsize+INCREMENT;

}

q=(l.elem[i-1]);

for(p=(l.elem[l.length-1]);p=q;--p)

{

*(p+1)=*p;

}

*q=e;

++l.length;

cout"插入成功";

return 1;

}

//删除数据

status listdelete(sqlist l,int i,elementype e)

{

elementype *p,*q;

if(i1||il.length)

{

cout"i输入错误"endl;

return 0;

}

p=(l.elem[i-1]);

e=*p;

q=l.elem+l.length-1;

for(++p;p=q;++p)

{

*(p-1)=*p;

}

--l.length;

cout"删除成功"endl;

free(e);

return 1;

}

//删除重复的数据

status listdeleterepeat(sqlist l)

{

int i,j;

elementype *p,*q,e;

for(i=0;il.length-1;i++)

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

if(l.elem[i]==l.elem[j])

{

p=(l.elem[j]);

e=*p;

q=l.elem+l.length-1;

for(++p;p=q;++p)

{

*(p-1)=*p;

}

--l.length;

free(e);

j--;

}

return 1;

}

//输出顺序表数据

status displaylist(sqlist l)

{

int i;

cout"顺序表的数据为:"endl;

for(i=0;il.length;i++)

{

coutl.elem[i]" ";

}

coutendl;

return 1;

}

//查找数据

status locatelem(sqlist l,int x)

{

elementype *p;

int i=1;

p=l.elem;

while(il.length(*p++)!=x)

i++;

coutiendl;

return 1;

}

//清空列表

void listclear(sqlist l)

{

l.length=0;

}

//销毁顺序表

void listdestroy(sqlist l)

{

if(l.elem)

free(l.elem);

}

//求顺序表长度

status listlength(sqlist l)

{

cout"顺序表的长度为:"l.lengthendl;

return 1;

}

int main()

{

sqlist l;

int a,i,x;

elementype e;

cout"*************************************************"endl;

cout"* 顺序表的表示和实现 *"endl;

cout"*************************************************"endl;

do{

cout"*************************************************"endl;

cout"* 菜单 *"endl;

cout"* 1.建立顺序表 *"endl;

cout"* 2.插入数据 *"endl;

cout"* 3.删除数据 *"endl;

cout"* 4.删除重复数据 *"endl;

cout"* 5.清空数据 *"endl;

cout"* 6.查找数据 *"endl;

cout"* 7.顺序表的长度 *"endl;

cout"* 8.显示顺序表 *"endl;

cout"* 0.退出顺序表 *"endl;

cout"*************************************************"endl;

cout"输入你的选择:";

cina;

switch(a)

{

case 1: listinit(l);

displaylist(l);

break;

case 2: cout"请输入要插入数据的位置:";

cini;

cout"请输入要插入的数据元素:";

cine;

listinsert(l,i,e);

displaylist(l);

break;

case 3: cout"请输入要删除的数据的位置:";

cini;

listdelete(l,i,e);

displaylist(l);

break;

case 4: cout"删除前的数据为:";

displaylist(l);

listdeleterepeat(l);

cout"删除后的数据为:";

displaylist(l);

break;

case 5: cout"清空前为:";

displaylist(l);

cout"清空后为:";

listclear(l);

displaylist(l);

break;

case 6: cout"输入你要查找的数据:";

cinx;

cout"你要查找的数据的位置为:";

locatelem(l,x);

displaylist(l);

break;

case 7: cout"顺序表的长度为:";

listlength(l);

break;

case 8: displaylist(l);

break;

default: break;

}

}while(a!=0);

return 1;

}

用C语言创建一个顺序表并完成插入等操作

/*

GY52122008

请输入插入字符 : -

请输入插入位置 : 7

GY5212-2008

Press any key to continue

*/

#include malloc.h

#include stdio.h

#include string.h

#define maxsize 100

typedef struct {

char *data;

int length;

}sqlist;

void initlist(sqlist *L) { //初始化顺序表

L = (sqlist *)malloc(sizeof(sqlist));

L-data = (char *)malloc(maxsize);

L-length = 0;

}

void createlist(sqlist *L,char a[],int n) { //建立顺序表

int i;

for(i = 0;i  n;i++) L-data[i] = a[i];

L-length = n;

}

bool listinsert(sqlist *L,int i,char e) { //插入数据元素

int j;

if(i  1 || i  L-length + 1) return false;

i--;

for(j = L-length;j  i;j--) L-data[j] = L-data[j - 1];

L-data[i] = e;

L-length++;

return true;

}

bool listdelete(sqlist *L,int i,char e) { //删除数据元素

int j;

if(i  1 || i L-length) return false;

i--;

e = L-data[i];

for(j = 1;j  L-length - 1;j++) L-data[j] = L-data[j + 1];

L-length--;

return true;

}

int listlength(sqlist *L) { //求线性表长度

return(L-length);

}

void destroylist(sqlist *L) {

free(L);

}

int locateelem(sqlist *L,char e) { //按元素查找

int i = 0;

while(i  L-length  L-data[i] != e) i++;

if(i = L-length) return 0;

else return i + 1;

}

void displist(sqlist *L) {  //输出线性表

int i;

for(i = 0;i  L-length;i++) printf("%c",L-data[i]);

printf("\n");

}

int main() {

int pos,len;

char ch,data[50] = "GY52122008";

sqlist *L;

initlist(L); // 先初始化

len = strlen(data);

createlist(L,data,len); // 创建表

displist(L);

printf("请输入插入字符 : ");

scanf("%c",ch);

printf("请输入插入位置 : ");

scanf("%d",pos);

if(listinsert(L,pos,ch)) displist(L);

else printf("插入操作失败。\n");

free(L-data);

free(L);

return 0;

}


文章名称:顺序表插入函数C语言 顺序表的建立c语言
转载来源:http://cxhlcq.com/article/dojeopc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部