在顺序表第i个位置插入值为x的结点 下面程序哪里有问题

#include<stdio.h>
#define maxsize 10
typedef int datatype;
typedef struct{
datatype a[maxsize];
int size;
}sequence_list;
void init(sequence_list *slt )
{ slt->size=0;
}
sequence_list*append(sequence_list *slt,datatype x)
{
int i;
if(slt->size==maxsize) {printf("full:");exit(1);}
for(i=0;i<maxsize;i++)
{scanf("%d",&i);
slt->a[slt->size]=x; slt->size++;
}
return slt;
}
void display(sequence_list slt)
{
int i;
if(!slt.size) printf("empty:");
for(i=0;i<slt.size;i++)
printf("%5d",slt.a[i]);
}
void insert(sequence_list *slt,datatype x,int i)
{ int j;
while(i<slt->size&&slt->a[i]<x)
i++;
for(j=slt->size;j>=i;j--)
{
slt->a[j+1]=slt->a[j];
slt->a[i]=x;
slt->size++;
}
}
int main (void)
{
sequence_list *la;
datatype x;
int i;
init(la);
la=append(la,x);
display(*la);
printf("input x and i:" );
scanf("%d%d",&x,&i);
insert(la,x,i) ;
display (*la) ;
getch();
}

第1个回答  2010-12-02
#include<stdio.h>
#include <stdlib.h>
#define maxsize 10

typedef int datatype;

typedef struct{
datatype a[maxsize];
int size;
}sequence_list;

void init(sequence_list **slt )
{
*slt=(sequence_list*)malloc(sizeof(sequence_list));
if (*slt)
(*slt)->size=0;
else
*slt=NULL;
}

sequence_list*append(sequence_list *slt,datatype x)
{
int i;
if(slt->size==maxsize) {printf("full:");exit(1);}
printf("input %d data:\n",maxsize);
for(i=0;i<maxsize;i++)
{
printf("input %d data:\n",i+1);
scanf("%d",&x);
slt->a[slt->size]=x;
slt->size++;
}
return slt;
}
void display(sequence_list &slt)
{
int i;
if(!slt.size) printf("empty:");
for(i=0;i<slt.size;i++)
printf("%5d",slt.a[i]);
}
sequence_list * insert(sequence_list *slt,datatype x,int i)
{
for (int k=maxsize;k>=i;k--)
{
slt->a[k]=slt->a[k-1];
}
slt->a[i-1]=x;
slt->size++;
return slt;
}
int main (void)
{
sequence_list *la;
datatype x;
int i;
init(&la);
la=append(la,x);
display(*la);
printf("input x and i:" );
scanf("%d%d",&x,&i);
la=insert(la,x,i) ;
display (*la) ;
// getch();
}

在顺序表第i个位置插入值为x的结点 下面程序哪里有问题
sequence_list*append(sequence_list *slt,datatype x){ int i;if(slt->size==maxsize) {printf("full:");exit(1);} printf("input %d data:\\n",maxsize);for(i=0;i<maxsize;i++){ printf("input %d data:\\n",i+1);scanf("%d",&x);slt->a[slt->size]=x;slt->size++;}...

在带头节点的单链表的第i个位置插入值为x的节点?用C语言,写出完整代码...
struct Node *tmp,*prev=head;int j;tmp=malloc(sizeof(struct Node));tmp->elem=x;for(j=1;j<i;j++) prev=prev->Next;tmp->Next=prev->Next;prev->Next=tmp;

设计一个算法,在一个单链表中值为y的结点前插入一个值为x的结点。
LinkList p = L->next; \/* p指向第一个结点 *\/ while(p) \/* 没到表尾 *\/ { i++;p = p->next;} return i;} \/***\/ \/* 初始条件: 线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0)*\/ \/* 操作结果: 返回L中第1个与e满足关系compare()的数据元素的位序。 *\/...

计算机应用基础知识
顺序存储结构的主要特点是:(1)结点中只有自身信息域,没有连接信息域,因此存储密度大,存储空间利用率高;(2)可以通过计算直接确定数据结构中第i个结点的存储地址Li,计算公式为Li=L0+(i-1)*m,其中L0为第一个结点的存储地址,m为每个结点所占用的存储单元个数;(3)插入、删除运算不便,会引起大量结点的移动。 2...

大家帮我看一下这个顺序表的插入数据元素的算法是不是有问题?
1、<1的位置不存数据这个插入位置不在范围内。2、>L.lenght+1在表的尾部之后了,超出范围。3、L.length==maxSize-1,说明表是满的,就没有再插入的可能。(0位置不算表空间)所以你的说法是正确的。程序书写太不规范,容易出现理解性错误。int insert(Sqlist &L,int p,int e){ int i;if(...

建立单链表,在单链表的第i个元素前插入x
linklist L;int i; char x;printf("依次输入链表元素,#结束:\\n");createlist(L);printf("创建的链表为:\\n");printlinklist(L);printf("输入要在第几个元素前插入:\\n");scanf("%d",&i);getchar();printf("输入要插入的节点值:\\n");scanf("%c",&x);getchar();printf("在第...

在长度为n的顺序表的第i个位置上
在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1)时,元素的移动次数为n-i+1。顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据...

一个线性表采用顺序表表示,设计一个算法,删除其中所有值等于X的元素...
操作结果:销毁顺序线性表L *\/void DestroyList(SqList *L) { free(L->elem);L->elem=NULL;L->length=0;L->listsize=0;}\/* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 *\/\/* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 *\/Status ListInsert(SqList *L,...

设计一个算法,求顺序表中值为x的结点的个数
X 的结点的个数;(3)、从键盘输入一个任意数据,例如:3;(4)、最后,从顺序表的最开始到结尾,顺序搜索在第(3)步中输入的数据 3,并将顺序表中值为 3 的节点的个数,保存到变量 count 中。整个循环结束,输出变量 count 的值,该值就是顺序表总值为 X (这里是 3)的节点的个数。

用c语言设计线性顺序表,求前驱,后进的问题。
int i;i=locateelem(l,cur_e);if((i==0)||(i==l.length)){ *next_e='no';printf(" 没有后继 ");return ERROR;} \/\/这里修改了 else \/\/这里修改了 { next_e=l.elem[i];return OK;} } \/*在第i个位置插入元素e*\/ status listinsert(sqlist *l,int i,elemtype e){ int...

相似回答