建立一个含10个元素的顺序线性表 然后在第i个位置插入元素M 再在第j个位置删除元

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了建立一个含10个元素的顺序线性表 然后在第i个位置插入元素M 再在第j个位置删除元相关的知识,希望对你有一定的参考价值。

用C语言 很简单吧 麻烦各位了 在线等 不是链表
再在第J个位置删除元素N

参考技术A //***********线性表的基本操作只有两个,插入,删除。这里写三个:初始化,插入,删除。
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType;
typedef int Status;
typedef struct
ElemType *elem;
int length;
int listsize;
Sqlist;
Status InitList_Sq(Sqlist *L) //千万注意这里的参数是×L ,而不是&L,为什么?
L->elem = (ElemType *) malloc (LIST_INIT_SIZE * sizeof(ElemType) );//这里为什么是L->elem,而不是L.elem?
if(!L->elem) exit( OVERFLOW );
L->length=0;
L->listsize = LIST_INIT_SIZE;
return OK;//这句话纯属废话

Status ListInsert_Sq ( Sqlist *L, int i, ElemType e )
ElemType *newbase, *p, *q;
if(i<1 || i>L->length+1) return ERROR;
if(L->length >= L->listsize)
newbase = (ElemType *)realloc(L->elem, (L->listsize+LISTINCREMENT)*sizeof(ElemType) );
if(!newbase) exit(OVERFLOW);
L->elem = newbase;
L->listsize += LISTINCREMENT;

q = &(L->elem[i-1]);
for( p = &(L->elem[L->length-1]); p >= q; --p)
*(p+1)=*p;
*q = e;
++L->length;
return OK;

Status ListDelete_Sq(Sqlist *L, int i, ElemType *e)
ElemType *p, *q;
if( (i<1) ||(i>L->length) ) return ERROR;
p = &(L->elem[i-1]);
*e = *p;
q=L->elem + L->length- 1;
for(++p; p<=q; ++p) *(p-1)= *p;
--L->length;
return OK;

Status ListDisplay(Sqlist A)
int i=0;
while(i < A.length)
printf("%5d", A.elem[i]);
i++;


int main( void )
int e, i, a, b;
Sqlist A;
printf("初始化部分:\n");
InitList_Sq(&A);//注意:这里为什么是&A?
printf("基本操作:插入\n");
printf("请输入结点数:\n");
scanf("%d", &a);
for(i=0; i< a; i++)
printf("请输入第%d个数\n", i+1);
scanf("%d", &e);
printf("请输入位置:\n");
scanf("%d", &b);
ListInsert_Sq(&A,b,e);

printf("基本操作:删除\n");
printf("请输入删除位置:");
scanf("%d",&i);
ListDelete_Sq(&A,i,&e);
ListDisplay(A);
printf("\n");
system("PAUSE");
//这个可以满足你的要求,但要改一下。本回答被提问者采纳
参考技术B int x[10];
x[i]=m;
x[j]=0;

转:错排公式

n 个不同元素的一个错排可由下述两个步骤完成: 
第一步,“错排” 1 号元素(将 1 号元素排在第 2 至第 n 个位置之一),有 n - 1 种方法。 
第二步,“错排”其余 n - 1 个元素,按如下顺序进行。视第一步的结果,若1号元素落在第 k 个位置,第二步就先把 k 号元素“错排”好, k 号元素的不同排法将导致两类不同的情况发生:
1、 k 号元素排在第1个位置,留下的 n - 2 个元素在与它们的编号集相等的位置集上“错排”,有 f(n -2) 种方法;
2、 k 号元素不排第 1 个位置,这时可将第 1 个位置“看成”第 k 个位置(也就是说本来准备放到k位置为元素,可以放到1位置中),于是形成(包括 k 号元素在内的) n - 1 个元素的“错排”,有 f(n - 1) 种方法。据加法原理,完成第二步共有 f(n - 2)+f(n - 1) 种方法。 
根据乘法原理, n 个不同元素的错排种数 
f(n) = (n-1)[f(n-2)+f(n-1)] (n>2) 。 

以上是关于建立一个含10个元素的顺序线性表 然后在第i个位置插入元素M 再在第j个位置删除元的主要内容,如果未能解决你的问题,请参考以下文章

线性表的创建,删除插入等操作

在长度为n的顺序表的第i(1≤i≤n+1)个位置上插入一

第一个 建立一个顺序表,要求,输入整数建立,输入-1表示结束 第二个,在顺序表第i个位置插入一个元素x。

怎样在顺序表第i个位置插入一个元素

《线性表的总结---线性顺序表(静态,动态)---线性链表(动态)》

DS顺序表--连续操作