删除线性表L中第i个元素起的k个元素

来源:互联网 发布:网络终端机软件 编辑:程序博客网 时间:2024/04/29 14:39

这应该是数据结构的题目吧。这题是上课时我同学和我讨论的,当时没用线性表,只是用数组(栈)解决了。现在改用线性表试试,还不是很熟悉。

code:

#include<stdio.h>#include<stdlib.h>  //或者是 #include<malloc.h> 的头文件#define N 10struct Sqlist{    int *elem;    int length;    int listsize;}L;int DeleteK(struct Sqlist *L, int j, int k){    int i;    for(i = 0; i <= L->length-j-k; i++)     //i=0,而不是i=1,因为第i个是起始元素        L->elem[i+j-1] = L->elem[j+k+i-1];    L->length -= k;    return 0;}int main(){    int i, j, k;    L.listsize = N;    L.elem = (int *)malloc(sizeof(int) * L.listsize); //申请listsize个大小为整型(int)字节的空间    printf("输入原始线性表:\n");    for(i = 0; i < N ;i++)        scanf("%d", &L.elem[i]);    L.length = L.listsize;    printf("\n输入起始位置:");    scanf("%d", &j);    printf("\n输入要删除元素的个数:");    scanf("%d", &k);    DeleteK(&L, j, k);    for(i = 0; i < N-k; i++)        printf("%d ", L.elem[i]);    return 0;}

原创粉丝点击