设顺序表l中有n个数据元素,则删除该表中第i个元素需要移动()个元素。 删除顺序表中的第i个元素,,给个完整的 C语言代码吧~~~ ...

\u5728\u4e00\u4e2a\u957f\u5ea6\u4e3an\u7684\u987a\u5e8f\u8868\u4e2d\u5220\u9664\u7b2ci\u4e2a\u5143\u7d20\u65f6\uff0c\u9700\u5411\u524d\u79fb\u52a8 \u591a\u5c11\u4e2a\u5143\u7d20\u3002

\u9700\u5411\u524d\u79fb\u52a8n-i\u4e2a\u5143\u7d20\u3002\u8fd9\u4e2ai\u7684\u8303\u56f4\u5e94\u5f53\u662f1\u2264i\u2264n+1\uff0c\u662f\u5411\u540e\u79fb\u52a8\u3002
\u540e\u9762\u7684\u5143\u7d20ai+1~an\u90fd\u8981\u5411\u4e0a\u79fb\u52a8\u4e00\u4e2a\u4f4d\u7f6e\u3002
\u5982\u987a\u5e8f\u8868\u7684\u6bcf\u4e2a\u7ed3\u70b9\u5360\u7528len\u4e2a\u5185\u5b58\u5355\u5143\uff0c\u7528location (ki)\u8868\u793a\u987a\u5e8f\u8868\u4e2d\u7b2ci\u4e2a\u7ed3\u70b9ki\u6240\u5360\u5185\u5b58\u7a7a\u95f4\u7684\u7b2c1\u4e2a\u5355\u5143\u7684\u5730\u5740\u3002\u5219\u6709\u5982\u4e0b\u7684\u5173\u7cfb:location (ki+1) = location (ki) +len\u3002


\u6269\u5c55\u8d44\u6599\uff1a
\u63d2\u5165\u6216\u5220\u9664\u4e00\u4e2a\u5143\u7d20\uff0c\u9700\u8981\u79fb\u52a8\u7684\u662f\u63d2\u5165\u6216\u5220\u9664\u5143\u7d20\u540e\u9762\u7684\u5143\u7d20\u3002
\u7531\u4e8e\u987a\u5e8f\u8868\u7684\u5b58\u50a8\u7279\u70b9\u662f\uff1a\u53ea\u8981\u786e\u5b9a\u4e86\u8d77\u59cb\u4f4d\u7f6e\uff0c\u8868\u4e2d\u4efb\u4e00\u5143\u7d20\u7684\u5730\u5740\u90fd\u901a\u8fc7\u4e0b\u5217\u516c\u5f0f\u5f97\u5230\uff1aLOC\uff08ai\uff09=LOC\uff08a1\uff09+\uff08i-1\uff09*L \u30001\u2264i\u2264n \u5176\u4e2d\uff0cL\u662f\u5143\u7d20\u5360\u7528\u5b58\u50a8\u5355\u5143\u7684\u957f\u5ea6\u3002
\u6240\u4ee5\u786e\u5b9a\u4e86\u63d2\u5165\u6216\u5220\u9664\u5143\u7d20\u7684\u4f4d\u7f6e\u540e\uff0c\u4fbf\u53ef\u7b97\u51fa\u9700\u8981\u79fb\u52a8\u7684\u5143\u7d20\u4e2a\u6570\u3002

#include
#define MAXSIZE 100
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);//\u8f93\u5165i\u548ck
while(scanf("%d",&l->elem[j])!=EOF)
j++;//\u8f93\u5165\u987a\u5e8f\u8868\u5185\u5bb9
l->last=j-1;
deletelist(l,i,k);
return 0;
}

\u6269\u5c55\u8d44\u6599
\u987a\u5e8f\u8868\u63d2\u5165\u5143\u7d20
\u5411\u5df2\u6709\u987a\u5e8f\u8868\u4e2d\u63d2\u5165\u6570\u636e\u5143\u7d20\uff0c\u6839\u636e\u63d2\u5165\u4f4d\u7f6e\u7684\u4e0d\u540c\uff0c\u53ef\u5206\u4e3a\u4ee5\u4e0b 3 \u79cd\u60c5\u51b5\uff1a
1\u3001\u63d2\u5165\u5230\u987a\u5e8f\u8868\u7684\u8868\u5934\uff1b
2\u3001\u5728\u8868\u7684\u4e2d\u95f4\u4f4d\u7f6e\u63d2\u5165\u5143\u7d20\uff1b
3\u3001\u5c3e\u968f\u987a\u5e8f\u8868\u4e2d\u5df2\u6709\u5143\u7d20\uff0c\u4f5c\u4e3a\u987a\u5e8f\u8868\u4e2d\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff1b\u5c06\u8981\u63d2\u5165\u4f4d\u7f6e\u5143\u7d20\u4ee5\u53ca\u540e\u7eed\u7684\u5143\u7d20\u6574\u4f53\u5411\u540e\u79fb\u52a8\u4e00\u4e2a\u4f4d\u7f6e\uff1b\u5c06\u5143\u7d20\u653e\u5230\u817e\u51fa\u6765\u7684\u4f4d\u7f6e\u4e0a\u3002
\u6ce8\u610f\uff0c\u52a8\u6001\u6570\u7ec4\u989d\u5916\u7533\u8bf7\u66f4\u591a\u7269\u7406\u7a7a\u95f4\u4f7f\u7528\u7684\u662f realloc \u51fd\u6570\u3002\u5e76\u4e14\uff0c\u5728\u5b9e\u73b0\u540e\u7eed\u5143\u7d20\u6574\u4f53\u540e\u79fb\u7684\u8fc7\u7a0b\uff0c\u76ee\u6807\u4f4d\u7f6e\u5176\u5b9e\u662f\u6709\u6570\u636e\u7684\uff0c\u8fd8\u662f 3\uff0c\u53ea\u662f\u4e0b\u4e00\u6b65\u65b0\u63d2\u5165\u5143\u7d20\u65f6\u4f1a\u628a\u65e7\u5143\u7d20\u76f4\u63a5\u8986\u76d6\u3002

在一个长度为n的顺序表中,删除第i(1≤i≤n)个元素时,需要移动的元素个数为n-i。

分析:在一个长度为n的顺序表中,删除一个元素时,有n个位置可供选择。需要改变从第 i+1个元素起到第n个元素的存储位置,即进行“从第i+1到第n个元素往前移动一个位置”,共需移动n-i个元素。



扩展资料

向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下3种情况:

1、插入到顺序表的表头;

2、在表的中间位置插入元素;

3、尾随顺序表中已有元素,作为顺序表中的最后一个元素。

虽然数据元素插入顺序表中的位置有所不同,但是都使用的是同一种方式去解决,即:通过遍历,找到数据元素要插入的位置,然后做如下两步工作:

1、将要插入位置元素以及后续的元素整体向后移动一个位置;

2、将元素放到腾出来的位置上。



假设n=5,删除第3个元素,第3个元素下标是2,那么需要移动下标为3、4的元素。也就是2个元素,5-3=2。那么答案是n-i

假设n=5,删除第3个元素,第3个元素下标是2,那么需要移动下标为3、4的元素。

  • 璁鹃『搴忚〃l涓湁n涓暟鎹厓绱,鍒鍒犻櫎璇ヨ〃涓i涓厓绱犻渶瑕佺Щ鍔()涓...
    绛旓細鍒嗘瀽锛氬湪涓涓暱搴︿负n鐨椤哄簭琛ㄤ腑锛屽垹闄や竴涓鍏冪礌鏃讹紝鏈n涓浣嶇疆鍙緵閫夋嫨銆傞渶瑕佹敼鍙樹粠绗 i+1涓厓绱犺捣鍒扮n涓厓绱鐨勫瓨鍌ㄤ綅缃紝鍗宠繘琛屸滀粠绗琲+1鍒扮n涓厓绱犲線鍓嶇Щ鍔ㄤ竴涓綅缃濓紝鍏遍渶绉诲姩n-i涓厓绱犮
  • 璁鹃『搴绾挎ц〃涓湁n涓暟鎹厓绱,鍒鍒犻櫎琛涓i涓厓绱犻渶绉诲姩澶氬皯涓厓绱
    绛旓細绗琲涓鍏冪礌鍏跺疄鍦ㄦ暟缁勭殑涓嬫爣鏄痠-1锛屽洜姝わ紝浠庝笅鏍噄鍒皀-1閮借鍔紝鎵浠ュ氨鏄痭-1-i+1=n-i;
  • 璁炬煡鎵捐〃鏈塶涓暟鎹厓绱,鍒浜屽垎鏌ユ壘绠楁硶鐨勫钩鍧囨煡鎵鹃暱搴︽槸澶氬皯_鐧惧害鐭 ...
    绛旓細褰n瓒嬩簬鏃犵┓澶ф椂锛屽钩鍧囨煡鎵鹃暱搴︿负(n+1) / n *log2(n+1) -1锛屽嵆浣縩姣旇緝灏忔椂姝e父鍊煎樊鍒篃涓嶅
  • SJTU 銆婄畻娉曡璁′笌鍒嗘瀽銆嬪鑰冮
    绛旓細4銆璁鹃『搴绾挎ц〃涓湁n涓暟鎹厓绱,鍒鍒犻櫎琛涓i涓厓绱犻渶鍚戝墠绉诲姩( )涓厓绱犮 a. n-1-i b. n-i c. i d. n+1-i 5銆佽椤哄簭寰幆闃熷垪Q[0:M-1]鐨勫ご鎸囬拡鍜屽熬鎸囬拡鍒嗗埆涓篎鍜孯,澶存寚閽團鎬绘槸鎸囧悜闃熷ご鍏冪礌鐨勫墠涓浣嶇疆,灏炬寚閽圧鎬绘槸鎸囧悜闃熷熬鍏冪礌鐨勫綋鍓嶄綅缃,鍒欒寰幆闃熷垪涓殑鍏冪礌涓暟涓( )銆 a. (R...
  • 璁鹃『搴绾挎ц〃涓湁n涓暟鎹厓绱,鍒犻櫎绗琲涓綅缃笂鐨勬暟鎹厓绱犻渶瑕佺Щ鍔琛涓...
    绛旓細(1)n-i
  • 鏁版嵁缁撴瀯涓椤哄簭鏌ユ壘鍏冪礌鐨勬椂鍊,n涓暟鎹厓绱鐨琛,瀹氫綅绗琲涓厓绱犳椂姣旇緝娆...
    绛旓細缁撴灉涓鏍风殑 椤轰究鎻愪竴鍙ワ紝閭d釜鍏紡鍚э紝绠楃殑鏃跺欐墍鏈変笉鍖呭惈绱姞鍙橀噺i鐨勫湪鍋氱疮鍔犳椂鐩存帴涔n锛鍖呭惈i鐨勫氨瑕佷粠1鍔犲埌n锛岀敱绱姞鍏紡寰梟*(n+1)/2锛屾鐜噋i鍙互鎻愬嚭鍘伙紝鍥犱负绱姞鍢涳紝涔樹竴涓父鏁版渶鍚庤繕鏄鎻愬嚭鍘伙紝鎵浠ュ師寮忓氨绛変簬1/n*(n鈭2-n*(n+1)/2+n)锛屽寲绠鏈鍚庣瓑浜(n+1)/2 ...
  • C璇█:1.寤虹珛鍚n涓暟鎹厓绱鐨椤哄簭琛骞惰緭鍑鸿琛ㄤ腑鍚勫厓绱犵殑鍊煎強椤哄簭琛...
    绛旓細1銆乮nclude<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct Lnode{int *data;int length;int maxsize;struct Lnode *next;}List;void creatList(List &L,int n){int count = 0;L.data = (int*)malloc(sizeof(int)*n);if (!L.data)cout << "鐢宠绌洪棿...
  • 绾挎ц〃鐨勫缓绔嬪強鍩烘湰鎿嶄綔鐨勫疄鐜
    绛旓細(1)寤虹珛鍚n涓暟鎹厓绱鐨勯『搴忚〃骞惰緭鍑鸿琛ㄤ腑鍚勫厓绱犵殑鍊煎強椤哄簭琛ㄧ殑闀垮害銆(2)鍒╃敤鍓嶉潰鐨勫疄楠屽厛寤虹珛涓涓椤哄簭琛↙={21,23,14,5,56,17,31},鐒跺悗鍦ㄧi涓綅缃彃鍏ュ厓绱66銆(3)寤虹珛涓涓甫... (1)寤虹珛鍚玭涓暟鎹厓绱犵殑椤哄簭琛ㄥ苟杈撳嚭璇ヨ〃涓悇鍏冪礌鐨勫煎強椤哄簭琛ㄧ殑闀垮害銆(2)鍒╃敤鍓嶉潰鐨勫疄楠屽厛寤虹珛涓涓『搴忚〃L={21...
  • 椤哄簭琛浠涔堟椂鍊鏈塶涓浣嶇疆鍙互鎻掑叆,浠涔堟椂鍊欐湁n 1涓綅缃彲鎻掑叆?_鐧惧害...
    绛旓細杩欎釜寰堝ソ鐞嗚В锛椤哄簭琛閲屽師鏈鏈塶涓厓绱狅紝姣忎釜鍏冪礌鐨勪綅缃兘鍙互鎻掑叆锛岃繖鏃剁殑鎯呭喌浼氫骇鐢熺Щ鍔紱鍙︿竴绉嶆儏鍐靛氨鏄洿鎺ユ彃鍦ㄦ湯灏撅紝杩欐椂涓嶉渶瑕佹尓鍔ㄥ厓绱犮傜患涓婂氨鏄疦+1涓綅缃
  • 宸茬煡鍏锋湁N涓暟鎹厓绱鐨勭嚎鎬у崟閾捐〃L,鍒╃敤鍗曢摼琛ㄥ悗鎻掑叆绠楁硶,鍦L涓绗琲涓...
    绛旓細int j=1; p=head; while(jnext) { p=p->next; j++; } if(j==i) { q=new node(e); q->next=p->next; p->next=q; } else { printf("閾捐〃娌℃湁%d涓鍏冪礌",i); }
  • 扩展阅读:在一个长度为n的顺序表中 ... 设输入序列为123456 ... 全错位排列10以内 ... 设循环队列的存储空间为 ... 为什么环形排列是n-1 ... 设置区域中的元素包括 ... 设置文本上标的元素是 ... 四个元素进入s栈的顺序 ... 假设一个顺序表中第1个数据元素 ...

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