
InsertFront就是将一个新元素插在线性表的最前面
InsertRear就是将一个新元素插在线性表的最后面
DeleteFront就是将线性表的最前面的元素删除
ClearList就是清空线性表
TraverseList就是将线性表从头到尾输出一遍
(1)InitList(La)
Int a[]={100,26,57,34,79}
For (i=0i<5i++) Insert(La,a[i])
分析:for进行了5次循环,线性表分别为:
100
26,100
26,57,100
26,34,57,100
26,34,57,79,100
(2)DeleteFront(La)
InsertRear(La, DeleteFront(La))
TraverseList(La)
分析:DeleteFront执行后线性表为:
34,57,79,100
InsertRear(La, DeleteFront(La))分两步执行,先执行DeleteFront,并将删除的元素作为新元素插入到线性表的最后,过程为:
57,79,100
57,79,100,34
(3)ClearList(La)
For (i=0i<5i++)
InsertFront(La,a[i])
分析:清空线性表,再将元素依次插入线性表的最前面:
空表
100
26,100
57,26,100
34,57,26,100
79,34,57,26,100
修改了下 代码如下:#include<stdio.h>
const int maxsize=18
struct sequenlist
{
int a[maxsize]
int len
}seq
/*
*
* 初始化线性表
*/
sequenlist init(sequenlist l)
{
l.len=100
return l
}
/*
*
* 初始化线性表2
*/
void input(sequenlist &l)
{
int n
printf("请你输入线性表元素的个数n:")
scanf("%d",&n)
l.len=n
int i=0
printf("请你输入线性表n个元素:")
for(i=0i<l.leni++)
{
scanf("%d",&l.a[i])
}
}
/*
*
* 遍历线性表
*/
void out(sequenlist l)
{
int i=0
for(i=0i<l.leni++)
{
printf("%d ",l.a[i])
}
}
/**
*
* 插入元素
**/
void insert(sequenlist &l,int X,int index)
{
if(index<0 &&index>=l.len)
printf("索引 index 无效,插入失败!")
else
{
int j
for(j=l.len-1j>=index-1j--)
{
l.a[j+1]=l.a[j]
}
l.a[index-1]=X
l.len++
}
}
/**
* 删除元素
*
*/
void delet(sequenlist &l,int index)
{
int j
for(j=indexj<=l.len-1j++)
{
l.a[j-1]=l.a[j]
}
l.len--
}
void main()
{
input(seq)
out(seq)//遍历
printf("\n")
insert(seq,5,10)
out(seq)//遍历
printf("\n")
delet(seq,5)
out(seq)//遍历
printf("\n")
}
int ListInsert_Sq(SqList &L,int i,int e)中q=(L.elem+i-1)
for(p=(L.elem+L.length-1)*p>=*q--p) *(p+1)=*p// 这里是想从数组尾到插入位置的数都后移一位,腾出一个位置给新数,可是循环条件是*p>=*q,即当p指向的数>=q指向的数时,才循环,我想应该不是本意,不妨改成:
for(p=(L.elem+L.length-1)p>=qp--) *(p+1) = *p
//注:只读了Insert部分,先改下试试吧
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)