顺序表删除第i个元素后,最后一个元素还存在吗? 在顺序表的第i个元素位置之前删除一个元素的子程序

\u987a\u5e8f\u8868\u5220\u9664\u81ea\u7b2ci\u4e2a\u5143\u7d20\u5f00\u59cb\u540e\u7684k\u4e2a\u5143\u7d20\uff0c\u4e3a\u4ec0\u4e48\u4e0d\u884c #include <stdio.h> #include <stdlib.h> #include <ma

\u56e0\u4e3a\u8f93\u5165\u7684\u65f6\u5019\u5982\u679c\u7528getchar()\u5c31\u4f1a\u628aENTER\u952e\u4e5f\u505a\u4e3a\u4e00\u4e2a\u5b57\u7b26\uff0c\u7b49\u5230\u7684\u7ed3\u679c\u5c31\u4e0d\u662f\u4f60\u60f3\u8981\u7684\uff0c\u5c31\u4f1a\u51fa\u9519\u3002

\u800c\u7528scanf()\u5c31\u4e0d\u4f1a\u5c06ENTER\u505a\u4e3a\u8f93\u5165\uff0c\u800c\u662f\u505a\u4e3a\u4e00\u6b21\u8f93\u5165\u7ed3\u675f\u3002

/*\u7ebf\u6027\u8868\u7684\u8fd0\u7528\uff081\uff09\u521b\u5efa\u987a\u5e8f\u8868\uff082\uff09\u83b7\u53d6\u7b2ci\u4e2a\u5143\u7d20\uff083\uff09\u67e5\u627e\u5143\u7d20x(4)\u5728\u67d0\u4e00\u4f4d\u7f6e\u63d2\u5165\u6570\u636e\uff085\uff09\u5220\u9664\u67d0\u4e00\u4f4d\u7f6e\u6570\u636e\u5728\u4e3b\u51fd\u6570\u4e2d\u8c03\u7528\u4e0a\u8ff0\u64cd\u4f5c\u3002*/#include#include#definemaxsize50typedefstruct{intdata[maxsize];intlast;}Sequenlist;Sequenlist*InitList()//\u521b\u5efa\u987a\u5e8f\u8868{Sequenlist*L;L=(Sequenlist*)malloc(sizeof(Sequenlist));L->last=0;return(L);}Sequenlist*creat()//\u521b\u5efa\u4e00\u4e2a\u6709\u5177\u4f53\u5185\u5bb9\u7684\u987a\u5e8f\u8868{Sequenlist*L;inti=1,n;L=InitList();printf("\u8bf7\u63d2\u5165\u6570\u636e,\u4ee50\u7ed3\u675f\n");scanf("%d",&n);while(n!=0&&L->lastdata[i]=n;i=i++;L->last++;scanf("%d",&n);}return(L);}intLength(Sequenlist*L)//\u6c42\u8868\u7684\u957f\u5ea6{return(L->last);}intGetData(Sequenlist*L,inti)//\u83b7\u53d6\u7b2ci\u4e2a\u5143\u7d20{if(i>=1&&ilast)return(L->data[i]);else{printf("\u53c2\u6570i\u4e0d\u5408\u7406\uff01\n");return0;}}intFind(Sequenlist*L,intx)//\u67e5\u627e\u5143\u7d20x{inti=1;while(ilast&&L->data[i]!=x)i++;if(ilast)return(i);elsereturn(0);}intInsert(Sequenlist*L,intx,inti)//\u5728\u67d0\u4e00\u4f4d\u7f6e\u63d2\u5165\u6570\u636e{intj;//\u5728\u8868\u4e2d\u7b2ci\u4e2a\u4f4d\u7f6e\u63d2\u5165\u65b0\u5143\u7d20xif(iL->last+1||L->last==maxsize)return0;//\u63d2\u5165\u4e0d\u6210\u529felse{for(j=L->last;j>=i;j--){L->data[j+1]=L->data[j];}L->data[i]=x;L->last++;return1;//\u63d2\u5165\u6210\u529f}}intDelete(Sequenlist*L,inti)//\u5220\u9664\u67d0\u4e00\u4f4d\u7f6e\u7684\u6570\u636e{//\u5728\u8868\u4e2d\u5220\u9664\u8282\u70b9iintj;if(iL->last)return0;for(j=i+1;jlast;j++)L->data[j-1]=L->data[j];L->last=L->last-1;return1;//\u6210\u529f\u5220\u9664}voidprint(Sequenlist*L)//\u6253\u5370\u51fd\u6570{inti;for(i=1;ilast;i++)printf("%d\n",L->data[i]);}voidmain(){intlength,i;intvalue,number,location;intj,k;intflag;Sequenlist*L;L=creat();length=Length(L);printf("Thelengthis%d\n",length);printf("Pleaseinputthelocation\n");scanf("%d",&location);value=GetData(L,location);printf("Thenumberis%d\n",value);printf("Whichnumberdoyouwanttofind?\n");//\u67e5\u627e\u529f\u80fdscanf("%d",&i);value=Find(L,i+1);if(value!=0)printf("Thelocationis%d\n",value);elseprintf("Thereisnosuchnumber!\n");printf("Whichplacedoyouwanttoinsert?\n");//\u63d2\u5165\u529f\u80fdscanf("%d",&j);printf("Pleaseinputthenumber\n");scanf("%d",&number);flag=Insert(L,number,j);if(flag==0)printf("Failingtoinsert!\n");else{printf("Done!\n");print(L);}printf("Whichplacedoyouwanttodelete?\n");//\u5220\u9664\u529f\u80fdscanf("%d",&k);flag=Delete(L,k);if(flag==0)printf("Failingtodelete!\n");else{printf("Done!\n");print(L);}}

i不为表头和表尾元素,若用后面的元素逐个前移的方法删,比如用for(int j = i ; j < L. length ; j++ ) L.data[ j - 1] = L.data[ j ]循环,当 j 来到最后一个元素时,把 j 赋给了前一个位置,这种覆盖法的话,那第 j 个位置从物理上说是“还存在”的。不过,在删除元素时,应该是有一个变量的值,用来标记顺序表中有效元素的个数的。所以删除后,此标记值就应该“减1”,也就是说,那个“还存在”的存储单元,已经不是顺序表的成员了,所以,它是“虽在犹亡”,不在统计范围内了。

用后面的元素逐个前移的方法

  • 鍦ㄤ竴涓暱搴︿负n鐨椤哄簭琛涓鍒犻櫎绗琲涓厓绱鏃,闇鍚戝墠绉诲姩澶氬皯涓厓绱
    绛旓細鍦ㄤ竴涓暱搴︿负n鐨椤哄簭琛涓锛屽垹闄や竴涓厓绱犳椂锛屾湁n涓綅缃彲渚涢夋嫨銆傞渶瑕佹敼鍙樹粠绗 i+1涓厓绱犺捣鍒扮n涓厓绱犵殑瀛樺偍浣嶇疆锛屽嵆杩涜鈥滀粠绗琲+1鍒扮n涓厓绱犲線鍓嶇Щ鍔ㄤ竴涓綅缃濓紝鍏遍渶绉诲姩n-i涓厓绱銆傚彧瑕佺‘瀹氫簡璧峰浣嶇疆锛岃〃涓换涓鍏冪礌鐨勫湴鍧閮介氳繃涓嬪垪鍏紡寰楀埌锛歀OC锛坅i锛=LOC锛坅1锛+锛坕-1锛*L 銆1鈮...
  • C璇█鏁版嵁缁撴瀯,鍐欎竴绉嶇畻娉,浠椤哄簭琛ㄥ垹闄ょi涓厓绱寮濮嬬殑绗琸涓厓绱
    绛旓細bool delete( array,int i,int j){ if(i+j > array.Length)return false;for(int k=i+j-1;k<array.Length-1;k++)array[k-1]=array[k];//i+k鍙婂叾鍚庨潰鐨鍏冪礌鍓嶇Щ銆俛rray.Length--;return true;}
  • 璁捐涓涓畻娉,浠椤哄簭琛涓鍒犻櫎鑷绗琲涓缁撶偣寮濮嬬殑k涓粨鐐广
    绛旓細printf("%d",s[i]);} printf("\n");} main(){ int a[MAXLEN]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};int i,k,%e;e=20;print(a,e);i=5; /*椤哄簭琛ㄧ5涓粨鐐*/ k=5; /*鍒犻櫎鑷5涓粨鐐瑰紑濮嬪彴鐨5涓粨鐐*/ deletesqlist(i,k,a,e);print(...
  • 缂栧啓鍦椤哄簭琛涓鍒犻櫎绗琲涓厓绱鐨勭畻娉,瑕佹眰鑳藉鍒ゆ柇鍒犻櫎浣嶇疆鏄惁姝g‘...
    绛旓細param initialSize 椤哄簭琛鐨勫垵濮嬪寲澶у皬 / ArrayList(int initialSize) { if (initialSize >= 0) { this.capacity = initialSize;data = new Object[initialSize];current = 0;} else { throw new RuntimeException("鍒濆鍖栧ぇ灏忎笉鑳藉皬浜0锛" + initialSize);} } / 鍦ㄧ嚎鎬ц〃鐨勬湯灏炬坊鍔鍏冪礌锛娣诲姞...
  • 缂栧啓涓涓畻娉,浠椤哄簭琛涓鍒犻櫎鑷绗琲涓厓绱寮濮嬬殑k涓厓绱
    绛旓細寰幆k娆★紝姣忔閮鍒犻櫎绗琲涓厓绱鍗冲彲銆
  • 鍐欎竴绠楁硶,浠椤哄簭琛涓鍒犻櫎鑷绗琲涓厓绱寮濮嬬殑k涓厓绱
    绛旓細瑕佷笉瑕佹妸鍒犻櫎鍏冪礌鐨勯『搴忎篃鍒犱簡锛鍚庨潰鐨勫厓绱犲墠绉伙級锛熻繕鏄綊0锛熷鏋鍒犻櫎椤哄簭锛n=0 鎸囬拡鍦绗竴鍏冪礌涓 寰幆锛歯=n+1 濡傛灉 n>=i and n<=i+k 鍒犻櫎 鍚﹀垯 goto next 濡傛灉涓嶅垹闄ら『搴 n=0 鎸囬拡鍦ㄧ涓鍏冪礌涓 寰幆锛歯=n+1 濡傛灉 n>=i and n<=i+k 鍒犻櫎 goto next 鍚﹀垯 goto next ...
  • 鍒犻櫎椤哄簭琛涓殑绗琲涓厓绱,,缁欎釜瀹屾暣鐨 C璇█浠g爜鍚~~ 璋㈣阿
    绛旓細typedef struct{ int elem[MAXSIZE];int last;} SeqList;void deletelist(SeqList *l,int i,int k);int main(){ int i,k,j=0;SeqList *l;SeqList a;l=&a;scanf("%d%d",&i,&k);//杈撳叆i鍜宬 while(scanf("%d",&l->elem[j])!=EOF)j++;//杈撳叆椤哄簭琛鍐呭 l->last=j-1;de...
  • C++鏁版嵁缁撴瀯,鍐欎竴绉嶇畻娉,浠椤哄簭琛ㄥ垹闄ょi涓厓绱寮濮嬬殑绗琸涓厓绱
    绛旓細int i;int j;T elem = data[idx];for(i = idx; i < count - 1; i++)data[i] = data[i + 1];--count;return elem;} T remove(int i, int k) //鍒犻櫎浠庝笅鏍噄寮濮嬬殑绗琸涓厓绱 { return remove(i + k - 1);} SqList<T>& push(T elem){ return insert(count, elem);...
  • 璁捐涓涓畻娉,鍒犻櫎涓涓『搴忚〃涓粠绗琲涓厓绱寮濮嬬殑k涓厓绱
    绛旓細濡傛灉鍒犻櫎椤哄簭锛n=0 鎸囬拡鍦绗竴鍏冪礌涓 寰幆锛歯=n+1 濡傛灉 n>=i and n<=i+k 鍒犻櫎 鍚﹀垯 goto next 濡傛灉涓嶅垹闄ら『搴 n=0 鎸囬拡鍦ㄧ涓鍏冪礌涓 寰幆锛歯=n+1 濡傛灉 n>=i and n<=i+k 鍒犻櫎 goto next 鍚﹀垯 goto next
  • 鏁版嵁缁撴瀯 鍒ゆ柇 鍦椤哄簭琛涓彇鍑绗琲涓厓绱鎵鑺辫垂鐨勬椂闂翠笌i鎴愭姣 绛旀鏄...
    绛旓細椤哄簭琛鏍规嵁娓告爣鏌ユ壘鏂逛究浣嗘槸鍏朵粬鐨勬搷浣滆姳璐归珮銆傚彇鍑绗琲涓厓绱鐨勬剰鎬濅笉鏄壘鍒拌繖涓厓绱狅紝鑰屾槸鎵惧埌鍚鍒犻櫎鎴栧埆鐨勪粈涔堟搷浣溿傞偅涔堟壘鍒扮i涓厓绱犵殑杩囩▼鏄笉鑺辫垂鏃堕棿鐨勶紝浠呬粎鏄竴涓湴鍧绉讳綅杩愮畻鑰屽凡銆備絾鏄帴涓嬫潵闇瑕佹妸i鍚庨潰鎵鏈夊厓绱犲線鍓嶇Щ涓浣嶏紝杩欐墠鏄姳璐规椂闂寸殑鍦版柟銆傛墍浠ヤ笉鏄笌i鎴愭姣旓紝鑰屾槸i瓒婂ぇ鑺辫垂鏃堕棿瓒婂皬 ...
  • 扩展阅读:删除栈里第i个元素 ... java 删除列表元素 ... 第五元素为什么禁播 ... 顺序表第i个位置删除 ... 顺序表在第i个位置 ... 链表中查找第i个元素 ... 顺序表的删除代码 ... c++中顺序表删除元素 ... 删除单链表的第i个结点 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网