⑴ 请问如何在excel中插入一列有顺序的数字,比如编号
使用插入功能后,然后使用序列填充即可
Excel版本参考:2010
1、选中A列,右击-插入
2、A1输入1,下拉填充到A10
3、点击A10的图标,选项填充序列
4、查看效果
⑵ 树的顺序存储结构,,我想先输入节点序号,再输入节点数据,然后将数据依序号存储到数组中。
是这样的,你输入1之后回车了,所以请输入节点数据之后你getchar应该是得到回车符(windows下回车符是chr(10),chr(13))
如果想实现这个效果,你在读i之后加一个gets();
gets能读完整行,把回车读走
⑶ 如何建立一个顺序存储的线性表,实现线性表的插入、删除操作
顺序存储结构线性表基本操作 C语言实现
#include<stdio.h>
//以下为函数运行结果状态代码
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
#defineLIST_INIT_SIZE100//线性表存储空间的初始分配量
#defineLISTINCREMENT10//线性表存储空间分配增量
typedefintStatus;//函数类型,其值为为函数结果状态代码
typedefintElemType;//假设数据元素为整型
typedefstruct
{
ElemType*elem;//存储空间基址
intlength;//当前长度
intlistsize;//当前分配的存储容量
}sqlist;
//实现线性表的顺序存储结构的类型定义
//函数声明开始
StatusInitList_Sq(SqList&L);
voidDestroyList_Sq(SqList&L);
voidClearList_Sq(SqList&L);
voidListEmpty_Sq(SqListL);
StatusGetElem_Sq(SqListL,i,&e);
intLocateElem_Sq(SqListL,e,compare());
StatusPriorElem_Sq(SqListL,cur_e,&pre_e);
StatusNextElem_Sq(SqListL,cur_e,&next_e);
StatusListInsert_Sq(SqList&L,i,e);
StatusListDelete_Sq(SqList&L,i,&e);
ListTravel_Sq(SqListL,visit());
//函数声明结束
intmain(void)
{
return0;
}
//函数定义开始
///////////////////////////////////////
//函数名:InitList_Sq()
//参数:SqList*L
//初始条件:无
//功能:构造一个空线性表
//返回值:存储分配失败:OVERFLOW
//存储分配成功:OK
///////////////////////////////////////
StatusInitList_Sq(SqList*L)
{
L.elem=(ElemType*)malloc((LIST_INIT_SIZE*sizeof(ElemType));//分配空间
if(!L.elem)
exit(OVERFLOW);//若存储分配失败,返回OVERFLOW
L.length=0;//空表,长度为0
L.listsize=LIST_INIT_SIZE;//初始存储容量
returnOK;
}
///////////////////////////////////////
//函数名:DestroyList_Sq()
//参数:SqList*L
//初始条件:线性表L已存在
//功能:销毁线性表
//返回值:无
///////////////////////////////////////
voidDestroyList_Sq(SqList*L)
{
if(L->elem)
free(L->elem);//释放线性表占据的所有存储空间
}
///////////////////////////////////////
//函数名:ClearList_Sq()
//参数:SqList*L
//初始条件:线性表L已存在
//功能:清空线性表
//返回值:无
///////////////////////////////////////
voidClearList_Sq(SqList*L)
{
L->length=0;//将线性表的长度置为0
}
///////////////////////////////////////
//函数名:ListEmpty_Sq()
//参数:SqListL
//初始条件:线性表L已存在
//功能:判断线性表是否为空
//返回值:空:TRUE
//非空:FALSE
///////////////////////////////////////
StatusListEmpty_Sq(SqListL)
{
if(L.length==0)
returnTRUE;
else
returnFALSE;
}
///////////////////////////////////////
//函数名:ListLength_Sq()
//参数:SqListL
//初始条件:线性表L已存在
//功能:返回线性表长度
//返回值:线性表长度(L.length)
///////////////////////////////////////
StatusListLength_Sq(SqListL)
{
return(L.length);
}
///////////////////////////////////////
//函数名:GetElem_Sq()
//参数:SqListL,inti,ElemType*e
//初始条件:线性表L已存在,1<=i<=ListLength(L)
//功能:用e返回线性表中第i个元素的值
//返回值:(i<1)||(i>ListLength(L)):ERROR
//1<=i<=ListLength(L):OK
///////////////////////////////////////
StatusGetElem_Sq(SqListL,inti,ElemType*e)
{
if(i<1||i>L.length)
returnERROR;//判断i值是否合理,若不合理,返回ERROR
*e=L.elem[i-1];//数组中第i-1的单元存储着线性表中第i个数据元素的内容
returnOK;
}
///////////////////////////////////////
//函数名:LocateElem_Sq()
//参数:L,e,compare(ElemType1,ElemType2)
//初始条件:线性表L已存在,compare()为数据元素判定函数
//功能:返回顺序表L中第1个与e满足关系compare()的数据元素的位序
//返回值:若在L中存在于e满足关系compare()的元素:其位序
//若在L中不存在于e满足关系compare()的元素:0
///////////////////////////////////////
intLocateElem_Sq(SqListL,e,compare(ElemType1,ElemType2))
{
inti=1;//i的初值为第1元素的位序
intp=L.elem;//p的初值为第1元素的存储位置
while(i<=L.length&&!(*compare)(*p++,e))
++i;//依次进行判定
if(i<=L.length)
returni;//找到满足判定条件的数据元素为第i个元素
else
return0;//该线性表中不存在满足判定的数据元素
}
StatusPriorElem_Sq(SqListL,cur_e,&pre_e);
//见StatusNextElem_Sq(SqListL,cur_e,&next_e);
StatusNextElem_Sq(SqListL,cur_e,&next_e);
//我的思路是先用LocateElem_Sq()搜索cur_e的位序,
//再看是否大于等于length,
//若是,则返回OVERFLOW;否则返回后继
//这样也许有点麻烦?所以希望大家能够补充方案
//bywangweinoo1
///////////////////////////////////////
//函数名:ListInsert_Sq()
//参数:SqList*L,inti,ElemTypee
//初始条件:线性表L已存在,1<=i<=ListLength(L)+1
//功能:在线性表中第i个数据元素之前插入数据元素e
//返回值:失败:ERROR
//成功:OK
///////////////////////////////////////
StatusListInsert_Sq(SqList*L,inti,ElemTypee)
{
ElemType*j;
if(L->length==LIST_MAX_LENGTH)
returnERROR;//检查是否有剩余空间
if(i<1||i>L->length+1)
returnERROR;//检查i值是否合理
//将线性表第i个元素之后的所有元素向后移动
for(j=L->length-1;j>=i-1;i++)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=e;//将新元素的内容放入线性表的第i个位置,
L->length++;
returnOK;
}
///////////////////////////////////////
//函数名:ListDelete_Sq()
//参数:SqList*L,inti,Elemtype*e
//初始条件:线性表L已存在,1<=i<=ListLength(L)
//功能:将线性表L中第i个数据元素删除
//返回值:失败:ERROR
//成功:OK
///////////////////////////////////////
intListDelete_Sq(SqList*L,inti,Elemtype*e)
{
if(IsEmpty(L))
returnERROR;//检测线性表是否为空
if(i<1||i>L->length)
returnERROR;//检查i值是否合理
*e=L->elem[i-1];//将欲删除的数据元素内容保留在e所指示的存储单元中
//将线性表第i+1个元素之后的所有元素向前移动
for(j=i;j<=L->length-1;j++)L->elem[j-1]=L->elem[j];
L->length--;
returnOK;
}
//函数定义结束
⑷ 给定一个有n个元素的线性表,若采用顺序存储结构如何向其插入一个元素需要移动的元
n个元素是吧,首先你要明白有n+1个位置可以插入,这个你可以理解吗?所以每个位置被插入入的概率为p=1/n+1,如果插入第一个位置需要移动n次,概率为pxn,插入第二个位置需要移动n-1次,概率为px(n-1),以此类推,当插入第n+1个位置时,就不需要移动任何元素,我们可以得到这样的通项公式,当插入第i个位置(1<=i<=n+1)时候,需要移动的次数为n+1-i,概率为px(n+1-i),
所以平均的概率(一共n+1项)为 pxn+px(n-1)+······+px1+px0=px(n+0)x(n+1)x1/2=n/2
(p=1/n+1,这个是求前n项和公式,高中应该学过的!)
⑸ 数据结构实验编程题目: 建立线性表的顺序存储结构的数据结构 要求:在键盘输入以下数字,并实现相应功能
#include<stdio.h>
#defineOK1
#defineERROR-1
#defineTURE1
#defineFALSE0
#defineMAXLENGTH20
structsequencelist
{
intdata[MAXLENGTH];
intlength;
};
//getlistelements
//.
intgetElement(structsequencelistlist,intindex,int*element)
{
printf(" getElement ");
intlength=list.length;
printf("lengthis%d ",length);
if(length==0||index<0||index>=length)
returnERROR;
*element=list.data[index];
returnOK;
}
//insertopration
//
intinsert(structsequencelist*list,intindex,intelement)
{
printf(" insert ");
intlength=list->length;
printf("lengthis%d ",length);
if(length==0||index<0||index>length||length>=MAXLENGTH)
returnERROR;
list->data[index]=element;
for(inti=length-1;i>index;i--)
{
list->data[i+1]=list->data[i];
}
list->length++;
returnOK;
}
//Deleteopration
//
intdelete(structsequencelist*list,intindex)
{
printf(" delete ");
intlength=list->length;
printf("lengthis%d ",length);
if(length==0||index<0||index>length-1)
returnERROR;
for(inti=index;i<length-1;i++)
{
printf("deletedata[%d] ",i);
list->data[i]=list->data[i+1];
}
list->data[length-1]='