线性表c语言实现中元素后移,for(p=&(L.elem[L.length-1]); p>=q; --p)

for (p=&L.elem[L.length-1]; p&=q; --p)请帮忙解释这个括号里的含义。_百度知道
for (p=&L.elem[L.length-1]; p&=q; --p)请帮忙解释这个括号里的含义。
int Insert_SqList (SqList&L,int i,ElemType x){
if(i& 1 ||
i&L.length+1)
return ERROR;
if(L.length&=L.listsize)
return OVERFLOW;
q=&(L.elem[i-1]);
for (p=&L.elem[L.length-1];
*(p+1)=*p;
return OK;}面句for()面- -p,意思我知道自减请结合段程序帮我解释口号整句都起解释谢谢
提问者采纳
for (p=&L.elem[L.length-1];
- -p)*(p+1)=*p;表示链表第i元素始直元素往移位p=&L.elem[L.length-1]意思p赋初值链表元素址p&=q表示循环知道p&q候结束,--p使p指针指向往前移位
谢谢,那你能再跟我讲一下这个嘛!这个是删除的!int Delete_SqList (SqList &L, int i) {
(i&L.length))
return ERROR;
p=&(L.elem[i-1]);
q=L.elem+L.length-1;
for (++ p&= ++p)
*(p-1)=*p;
return OK;}这个for()里面赋初值的++p是什么意思啊,我没有见过这种,平常多见的都是初值是一个确定的值!
这个你肯定看错了,没这种用法的,因为你前面已经给p赋初值了,所以正确的写法是直接省掉
for ( ; p&= ++p)这才是对的。。。你再仔细看看你有没贴错。。。
呃……这个是 数据结构上 的,我找了几本书,都是这么写的!谢谢你啦!!!
其他类似问题
为您推荐:
其他1条回答
iretI taly
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁帮我看一下这个线性表_百度知道
帮我看一下这个线性表
#include &stdio.h&#include&stdlib.h&#define LIST_TNIT_SIZE 100#define LISTINCREMENT
10#define ok¡¡1#define error 1typedef int Statustypedef struct{ int *
}SStatus Tnit(Sqlist &L){ L.elem=(int *)malloc(LIST_TNIT_SIZE*sizeof(int)); if(!L.elem) L.length=0; L.listsize=LIST_TNIT_SIZE; }Status ListTnsert(Sqlist &L,int i,int e){ if(i&1||i&L.listsize) if(L.length&=L.listsize) {
L.elem=(int *)realloc((LIST_TNIT_SIZE+LISTINCREMENT)*sizeof(int));
if(!L.elem)
L.listsize +=LISTINCREMENT; } q=&(L.elem[i-1]); for(p=&L.elem[L.length-1];p&=q;--p)
*(p+1)=*p; *q=e;
++ }Status ListDelete(Sqlist &L,int i,int &e){ if(i&1||i&L.listsize) p=&(L.elem[i-1]); e=*p; q=L.elem+L. for(++p;p&q;++p)
*(p-1)=*p; --L. }void main(){ Sqlist L; int i,n,e,m; m=4; e=12;
Tnit(L); printf(&input the number you want you bulid:&); scanf(&%d&,&n); for(i=0;i&n;i++)
L.elem[i]=i+1;
ListTnsert(L,i,n);
for(i=0;i&n;i++)
printf(&--&%d&,L.elem[i]); ListTnsert(L,i,n); for(i=0;i&n;i++)
printf(&--&%d&,L.elem[i]);}运行3错误
提问者采纳
错误较帮改结没调试自调试吧#include &stdio.h&#include&stdlib.h&#define LIST_TNIT_SIZE 100#define LISTINCREMENT
10//#define ok??1
//估计输入全角空格所显示 #define ok 0#define error 1typedef int S//少号 typedef struct{ int *
}SStatus Tnit(Sqlist &L){ L.elem=(int *)malloc(LIST_TNIT_SIZE*sizeof(int)); if(!L.elem) //eerror e
L.length=0; L.listsize=LIST_TNIT_SIZE; }Status ListTnsert(Sqlist &L,int i,int e){
int *p=NULL , *q=NULL ; if(i&1||i&L.listsize) if(L.length&=L.listsize) {
//L.elem=(int *)realloc((LIST_TNIT_SIZE+LISTINCREMENT)*sizeof(int)); //realloc少参数查函数使用说明
L.elem=(int *)realloc(L.elem,(LIST_TNIT_SIZE+LISTINCREMENT)*sizeof(int));
if(!L.elem)
L.listsize +=LISTINCREMENT; } q=&(L.elem[i-1]); //q没定义啊边p ,前面给补
for(p=&L.elem[L.length-1];p&=q;--p)
*(p+1)=*p; *q=e;
}Status ListDelete(Sqlist &L,int i,int &e){
int *p=NULL , *q=NULL ; //变量使用前要先定义
if(i&1||i&L.listsize) p=&(L.elem[i-1]); //定义用呢
e=*p; q=L.elem+L. for(++p;p&q;++p)
*(p-1)=*p; --L. }
提问者评价
哈哈,像个长者
来自团队:
其他类似问题
为您推荐:
线性表的相关知识
其他2条回答
何止3个错误,改的可以运行了(改动的地方都以注释给出了)
#include &stdio.h&
#include&stdlib.h&
#define LIST_TNIT_SIZE 100
#define LISTINCREMENT
#define ok 1
/* ok??1 */
#define error 1
typedef int S /* typedef int Status */
typedef struct
Status Tnit(Sqlist &L)
L.elem=(int *)malloc(LIST_TNIT_SIZE*sizeof(int));
if(!L.elem) /* */
L.length=0;
L.listsize=LIST_TNIT_SIZE;
Status ListTnsert(Sqlist &L,int i,int e)
int *p,*q; /* ... */
if(i&1||i&L.listsize)
if(L.length&=L.listsize)
L.elem=(int *)malloc((LIST_TNIT_SIZE+LISTINCREMENT)*s...
#include &stdio.h&
#include&stdlib.h&
#define LIST_TNIT_SIZE 100
#define LISTINCREMENT
#define ok 1
#define error 1
typedef int S//这里少了;
typedef struct
Status Tnit(Sqlist &L)
L.elem=(int *)malloc(LIST_TNIT_SIZE*sizeof(int));
if(!L.elem)
L.length=0;
L.listsize=LIST_TNIT_SIZE;
Status ListTnsert(Sqlist &L,int i,int e)
int *p,*q;//p、q没定义
if(i&1||i&L.listsize)
if(L.length&=L.listsize)
L.elem=(int *)malloc((LIST_TNIT_SIZE+LISTINCREMENT)*sizeof(int));
if(!L.elem)
L.listsize +=LISTINCR...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁q=L.elem+L. q指向顺序表尾 L.elem和L.length分别是什么东西
前者是一个指针,指向表头元素,后者是该顺序表(可以理解为数组)的长度(可以理解为表的元素个数)typedef struct{ElemType * // 指向表头元素 } L ; 这个题目要是再严谨点,如果q是指向顺序表尾(最后一个元素)的话,那么L.elem 应该是指向第一个元素之前,也就是“额外”添加的一个头元素.
为您推荐:
其他类似问题
扫描下载二维码数据结构作业答案(大连理工大学)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数据结构作业答案(大连理工大学)
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
你可能喜欢怎样在链表中指定位置i插入一个节点p的函数_百度知道
怎样在链表中指定位置i插入一个节点p的函数
1、线性表顺序表示Status ListInsert(SqList * L, int i, ElemType e){//L第i位置前插入新数据元素eL度加1 ElemType * newbase, * q, * if (i&1 || i&(* L).length+1)//i值合 {
return ERROR; } if ((* L).length &= (* L).listsize)//前存储空间已满增加配 {
if (!(newbase = (ElemType *)realloc((*L).elem,((* L).listsize+LIST_INCREMENT)*sizeof(ElemType))))
exit(OVERFLOW);//存储空间配失败
(* L).elem =//新基址
(* L).listsize += LIST_INCREMENT;//增加存储容量
} q = (* L).elem + i - 1;//q插入位置 for (p=(* L).elem+(* L).length-1; p&=q; --p)//插入位置元素及其元素移 {
* (p+1) = * } * q =//插入e
++(* L).//表增加1 return OK;} 2、线性表链式表示//带结点单链表L第i位置前插入元素eStatus ListInsert(LinkList L,int i,ElemType e){ int j = 0; LinkList p = L,s;
while (p && j&i-1)//寻找第i-1结点 {
j++; } if (!p || j&i-1)//i&1或者&表 {
return ERROR; } s = (LinkList)malloc(sizeof(LNode)); s-&data = s-&next = p-& p-&next =return OK;}
来自:求助得到的回答
其他类似问题
为您推荐:
链表的相关知识
其他2条回答
设i位置指针qp-&next=q-&q-&next=p;
求简答过程,程序设计啊,急急急。。。。
unsigned ListDelete(LinkList &L,int i){LinkList p,q;p=L;j=0;while(p-&next&&j&i-1){p=p-&++j;}if(!(p-&next)||j&i-1)return ERROR;q=p-&p-&next=q-&return OK;}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 线性表的基本操作 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信