谁懂数据结构C语言,帮个忙吧,我整了好久都没整好,会的帮我一下谢了

线性表的查找,插入,删除操作,帮忙看看下面的语句吧,不知哪错了,运行不了
#include<stdio.h>
int c=0;//C是用来计算数组中数的个数的,当下面插入时就c++;删除时就c--
void print(int a[100])//打印整个数组的函数
{
int b;
for(b=0;b<c;b++)
printf("%d ",a[b]);
printf("\n");
}
void cr(int a[])//插入函数
{
int i,j,m;
printf("请输入要插入的位置:");
scanf("%d",&i);
//*************************************************************
//这些是用来判断,所输入的位置是否存在,
//如果不存在,则重新再输入一次,当然这些可以不要,那在运行的时候
//就需要保证输入的位置都是对的!
while(i<1||i>c+1)
{
printf("没有这个位置,请重新输入要插入的位置:");
scanf("%d",&i);
}
//**************************************************************
printf("请输入要插入的数:");
scanf("%d",&j);
(c)++;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//用来把要插入位置以后的数,都往后移动一会,这样腾出位置
for(m=c-1;m>=i;m--)
{
a[m]=a[m-1];
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a[i-1]=j;//把要插入的数放入前面腾出的位置
print(a);
}

void del(int a[])//删除函数
{
int i,m;
printf("请输入要删除数的位置:");
scanf("%d",&i);
(c)--;
for(m=i-1;m<c;m++)
a[m]=a[m+1];
print(a);
}
void find(int a[])//查找函数
{
int i,m;
char x;
printf("请输入要查找的数:");
scanf("%d",&i);
for(m=0;m<c;m++)
{
if(a[m]==i)break;
}
if(m!=c)
{
printf("找到该数下标是%d.\n",m);

}
else
printf("查无此数.\n");
}
void hb(int a[])
{
int b[100]={0};
int d,i;
printf("请输入要并入的数组数据数量(不能大于%d):",100-c);
scanf("%d",&d);
for(i=0;i<d;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&b[i]);
}
printf("\n并入\n");
print(a);
printf("\n得到:\n");
for(i=0;i<d;i++)
{
a[c]=b[i];
c++;
}
print(a);
}

#define NULL 0
#include "malloc.h"
#define MAXSIZE 50
typedef struct
{
int data[MAXSIZE];
int last;
}SeqList;

/*顺序表的初始化*/
SeqList *init_SeqList()
{
SeqList *L;
L=malloc(sizeof(SeqList));
L->last=-1;
return L;

}
/*插入数据*/
void Insert_SeqList(SeqList *L,int i,int x)
{
int j;
if(L->last==MAXSIZE-1)
{
printf("full "); /*表空间已满无法插入*/
exit(0) ;
}
if(i<1||i>L->last+2) /*检查插入位置的正确性*/
{
printf("error ");
exit(1) ;
}
for(j=L->last;j>=i-1;j--)
{
L->data[j+1]=L->data[j]; }
L->data[i-1]=x;
L->last++;

}
/*删除操作*/
void Delete_SeqList(SeqList *L ,int i)
{
int j;
if(i<1||i>L->last+1)
{
printf("nofound");
exit(0) ;
}
for(j=i;j<=L->last;j++)
{
L->data[j-1]=L->data[j]; }
L->last--;

}
main()
{
int i,x,j ;
SeqList *L;
L= init_SeqList();
for(i = 1 ; i <= 8 ; i++)
{
Insert_SeqList(L,i,i);
}

for(j=0;j<=L->last;j++)
{
printf("%3d",L->data[j]);
}
printf("\n");

i=3;
x=2;
Insert_SeqList(L,i,x);
printf("\n after insert data:");

for(j=0;j<=L->last;j++)
{
printf("%3d",L->data[j]);
}
printf("\n");

i=5;
Delete_SeqList(L , i);
for(j=0;j<=L->last;j++)
{
printf("%3d",L->data[j]);
}
printf("\n");

getch();}
//中文是打不出来的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-06
c语言好像没有print函数。
还有,如果需要频繁插入数据建议使用链表。追问

具体要怎么做啊,我不懂

相似回答
大家正在搜