zoukankan      html  css  js  c++  java
  • 线性表

    #include <stdio.h>
    #include <stdlib.h>
    #define list_init_size 100
    #define listincrement 10
    typedef struct
    { int *elem;
    int length;
    int listsize;
    } sqlist;
    int initsqlist (sqlist *l)
    {
    l->elem=(int *)malloc(list_init_size*sizeof(int));
    if(!l->elem)
    exit(0);
    l->length=0;
    l->listsize=list_init_size;
    return 0;
    }
    int listinsert_sq(sqlist *l,int i,int e)
    {
    int *p,*q,*newbase;
    if(i<1||i>l->length+1)
    exit(0);
    if(l->length>=l->listsize)
    {
    newbase=(int *)realloc(l->elem,(l->listsize+listincrement)*sizeof(int));
    if(!newbase)
    exit(0);
    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 0;
    }
    int listdelete_sq(sqlist *l,int i,int m)
    {
    int *p,*q;
    if((i<1)||(i>l->length))
    exit(0);
    p=&(l->elem[i-1]);
    m=*p;
    q=l->elem+l->length-1;
    for(++p;p<=q;++p)
    *(p-1)=*p;
    --l->length;
    return m;
    }
    int main()
    {
    sqlist l;
    int i,j,e,k,m=0;
    initsqlist(&l);
    printf("输入顺序表: ");
    for(j=0;j<5;j++)
    {
    scanf("%d",&l.elem[j]);
    l.length++;
    }
    printf("输入要插入的位置和数: ");
    scanf("%d%d",&i,&e);
    listinsert_sq(&l,i,e);
    printf("插入后的顺序表: ");
    for(j=0;j<l.length;j++)
    printf("%d ",l.elem[j]);
    printf(" 输入要删除的位置: ");
    scanf("%d",&k);
    m=listdelete_sq(&l,k,m);
    printf("删除后的顺序表: ");
    for(j=0;j<l.length;j++)
    printf("%d ",l.elem[j]);
    printf(" 删除的数为: ");
    printf("%d ",m);
    return 0;
    }


  • 相关阅读:
    Linux内核等待队列机制介绍
    对数学的思考
    Linux 进程状态
    linux内核链表
    linux内核的经典书籍
    似乎最近发的Blog又少了
    抽象——放弃细节的另外一个说法
    成长
    发现QQ的一个小问题
    放上了一篇几个月前写的东西
  • 原文地址:https://www.cnblogs.com/tjkd/p/5365234.html
Copyright © 2011-2022 走看看