//线性表的顺序存储

#include <stdio.h>
typedef int DataType;
#define MaxSize 15
//定义顺序表
typedef struct 
{
 DataType List [MaxSize];
 int Size;
}Slist;
//初始化顺序表
void ListInit(Slist * S)
{
S->Size=0;

}
//插入数据
int ListInsert(Slist *S ,int i,DataType x)
{        int j;
      if(i<0||i>S->Size)
      {
      printf("插入位置不正确!");
      return 0;
      }
      else
      {
          for(j=S->Size;j>i;j--)
          {
              S->List[j]=S->List[j-1];
          }
          S->List[i]=x;
          S->Size++;
          return 1;
      }
}
//取得元素个数
int ListLength(Slist *S)
{
    return S->Size;
}

//删除元素
int ListDelete(Slist *S,int i,DataType *x)
{        int j;
    if(i<0||i>S->Size-1)
    {
      printf("删除位置不正确!");
      return 0;
    }
    else
    {     //保存删除的数据到x所指的变量中;
        *x=S->List[i];
        for(j=i;j<S->Size-1;j++)
        {
            S->List[j]=S->List[j+1]     ;
        
        }
            S->Size--;
            return 1;
    }
}
//取得顺序表中的元素
int ListGet(Slist *S,int i,DataType *x)
{    
    if(i<0||i>S->Size-1)
    {
      printf("没有这个元素!");
    }
    else
    {
        *x=S->List[i];
        return 0;
    }

}

//主函数

int main ()
{
    //定义一个结构体变量
    Slist     mylist;
    int x,b,i;
    //初始化
    ListInit(&mylist);
    //插入数据
    for(i=0;i<10;i++)
    ListInsert(&mylist,i,i+6);
    //取得数据元素个数
     b=ListLength(&mylist);
      printf("顺序表中的元素个数为:");
     printf("%d \n",b);
    //取得插入的数据
     for(i=0;i<ListLength(&mylist);i++)
     {
    ListGet(&mylist,0,&x);
    printf("%d \n",x);
     }
    return 0;
}

//线性表的链式存储
#include<stdio.h>
#include<malloc.h>
//定义链式表的结构体
typedef int DataType ;

typedef struct snode
     {      DataType data;
        struct snode *next;
     } Lnode;
//进行初始化
void ListInit(Lnode **head)
{
  *head=(Lnode*)malloc(sizeof(Lnode));       //头指针
  (*head)->next=NULL;
}

//插入数据
int ListInsert(Lnode *head,int i,DataType x)
{
    int j;
  Lnode *p,*q;
  p=head;
  j=-1;
  while(p->next!=NULL&&j<i-1)
  {
      p=p->next;
      j++;
  }
      if(j!=i-1)
      {
        printf("插入的位置不对,请重新插入");
        return 0;
      }
      q=(Lnode*)malloc(sizeof(Lnode));      //申请一个节点
      q->data=x;
      q->next=p->next;
      p->next=q;
      return 1;
  }

//取得元素个数
  int ListLength(Lnode *head)
  {
    Lnode *p;
    int size=0;
    p=head;

while(p->next!=NULL)
    {
    p=p->next;
         size++;
    }
    return size;
  }

//删除数据
  int ListDelete(Lnode *head,int i,DataType *x)
  {
     Lnode *p,*q;
     int j;
     p=head;
     j=-1;
     while(p->next!=NULL&&j<i)
     {
         p=p->next;
         j++;
     }
     if(j!=i-1)
     {
          printf("删除的位置不对!");
         return 0;
     }
     q=p->next;
     *x=p->data;
     p->next=p->next->next;
     free(q);
     return 1;
  }

//取得元素
  int ListGet(Lnode* head,int i,DataType *x)
  {
    Lnode *p;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i)
    {
      p=p->next;
      j++;
    }
    if(j!=i)
    {
        printf("取元素位置参数有误!");
        return 0;
    }
    *x=p->data;
    return 1;
  }
 
  //销毁数据链
 void ListDestroy(Lnode **head)
 {
      Lnode *p,*q;
     p=*head;
     while(p!=NULL)
     {        q=p;
     p=p->next;
     free  (q);
    }
     *head=NULL;
 }

//主函数
void main ()
     {
         Lnode *mylist;
         int i,x,s;
     //初始化链表
         ListInit(&mylist);
         //插入数据
         for(i=0;i<10;i++)
         ListInsert(mylist,i,i+1);
         //取得数据个数
        s= ListLength(mylist);
        printf("元素个数为:%d \n",s);
        //取得所有数据
        for(i=0;i<ListLength(mylist);i++)
        {
        ListGet(mylist,i,&x) ;
        printf("%d\n",x);
        }
     }

最新文章

  1. 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener--转
  2. python对缓存(memcached,redis)的操作
  3. vim编辑器编程配置
  4. Makefile 快速入门
  5. javascript !!的作用是把一个其他类型的变量转成的bool类型
  6. gnome3 no launcher
  7. python之基础中的基础(三)
  8. Java Map对象的遍历
  9. Linux下安装gradle
  10. java核心-多线程-线程类-Callable、Future和FutureTask
  11. 数论细节梳理&amp;模板
  12. ZooKeeper用途
  13. 在Android中afinal框架下實現sqlite數據庫版本升級的辦法
  14. 解决无法安装Flash Player的问题
  15. golang fmt格式“占位符”
  16. 绿色版Mysql自动建立my.ini和命令行启动并动态指定datadir路径
  17. MongoDB 2.4企业版分析
  18. linux系统挂载U盘,中文文件名乱码解决方案
  19. HDU 1880 简单Hash
  20. ZooKeeperEclipse 插件

热门文章

  1. (57)zabbix Slide shows幻灯片展示
  2. Python赋值运算及流程控制
  3. MariaDB数据库(三)
  4. linux系统,python3.7环境安装talib过程
  5. JAVA复制
  6. 10大mysql需要注意的参数
  7. js-dom-EventUtil
  8. CMDB资源配置管理项目
  9. luogu2568 GCD
  10. NYOJ 7 街区最短路径问题