顺序存储表

环境:gcc

目的:顺序存储表练习

功能如下:

1.创建一个空顺序存储表

2.判断表空

3.判断表满

4.求表长

5.插入一个元素

6.删除一个元素

7.修改一个元素

8.查找一个元素

9.遍历顺序存储表


顺序存储表结构如下:

 

/*************************************************************************

> File Name: seqlist.c

> Author: wanghao

> Mail: [email protected]

> Created Time: Tue May  8 19:44:53 PDT 2018

************************************************************************/

#include <stdio.h>

#include <stdlib.h>

#define MAXSIZE 10

typedef int data_t;

typedef struct node

{

       data_tdata[MAXSIZE];

       intlength;

}NODE;

/*Create a empty sequntial storage list*/

NODE *create_empty_list(void);

/*Jude sequntial storage list is empty*/

int judge_list_empty(NODE *list);

/*Jude sequntial storage list is full*/

int judge_list_full(NODE *list);

/*Seek the lenght of list*/

int seek_list_length(NODE *list);

/*Insert a data into list*/

int insert_list_data(NODE *list, data_tdata);

/*Delete a data from list*/

int delete_list_data(NODE *list, intlocation);

/*Modify a data in list*/

int modify_list_data(NODE *list, intlocation, data_t data);

/*Find a data in list*/

int find_list_data(NODE *list, data_tdata);

/*Traverse a data from list*/

int traverse_list_data(NODE *list);

/*Free list mem*/

int free_list(NODE *list);

int main(int argc, const char *argv[])

{

       inti;

       NODE*phead = NULL;

       /*Thefollowing code is used to test*/

       phead= create_empty_list();

       for(i= 11; i < 55; i += 2)

       {

              insert_list_data(phead,i);    

              printf("Thelength of list is %d\n",seek_list_length(phead));

       }

       traverse_list_data(phead);

       for(i= 0; i < 5; i++)

       {

              delete_list_data(phead,phead->length);

              printf("Thelength of list is %d\n",seek_list_length(phead));

       }

       traverse_list_data(phead);

       find_list_data(phead,98);

       modify_list_data(phead,phead->length+1, 99);

       modify_list_data(phead,phead->length, 99);

       modify_list_data(phead,phead->length-1, 98);

       modify_list_data(phead,phead->length-2, 97);

       traverse_list_data(phead);

       find_list_data(phead,98);

       free_list(phead);

       return0;

}

NODE *create_empty_list(void)

{

       NODE*p = NULL;

       p= (NODE *)malloc(sizeof(NODE));

       if(p== NULL)

       {

              printf("Malloclist mem fail!\n");

              exit(-1);

       }

  /*missing p->length = 0, add later*/
p->length = 0;

       returnp;

}

/*Jude sequntial storage list is empty*/

int judge_list_empty(NODE *list)

{

       if(list== NULL)

       {

              printf("Thelist is not exist!\n");

              return-1;

       }

       if(list->length== 0)

       {

              printf("Thelist is empty!\n");

              return0;

       }

       return1;

}

/*Jude sequntial storage list is full*/

int judge_list_full(NODE *list)

{

       if(list== NULL)

       {

              printf("Thelist is not exist!\n");

              return-1;

       }

       if(list->length== MAXSIZE)

       {

              printf("Thelist is full!\n");

              return0;

       }

       return1;

}

/*Seek the lenght of list*/

int seek_list_length(NODE *list)

{

       if(list== NULL)

       {

              printf("Thelist is not exist!\n");

              return-1;

       }

       returnlist->length;

}

/*Insert a data into list*/

int insert_list_data(NODE *list, data_tdata)

{

       intlist_info;

       list_info= judge_list_full(list);

       if(list_info!= 1)

       {

              printf("Insertlist dasta wrong!\n");

              return-1;

       }

       list->data[list->length]= data;

       list->length++;

       return1;

}

/*Delete a data from list*/

int delete_list_data(NODE *list, intlocation)

{

       inti, list_info;

       list_info= judge_list_empty(list);

       if(list_info!= 1)

       {

              printf("Deletelist data wrong!\n");

              return-1;

       }

/*missing the location = list-> length, add later*/
if(location < 0 || location >= list->length)

       {

              printf("Thedata location is wrong!");

              return0;

       }

/*missing the fact that the data in location is corresponds to a[location-1]*/
for(i = location-1; i < list->length; i++)

       {

              list->data[i]= list->data[i+1];

       }

       list->length--;

       return1;

}

/*Modify a data in list*/

int modify_list_data(NODE *list, intlocation, data_t data)

{

       intlist_info;

       list_info= judge_list_empty(list);

       if(list_info!= 1)

       {

              printf("Modifylist data wrong!\n");

              return-1;

       }

       if(location< 0 || location >= list->length)

       {

              printf("Thedata location is wrong!\n");

              return0;

       }

       list->data[location]= data;

       return1;

}

/*Find a data in list*/

int find_list_data(NODE *list, data_t data)

{

       inti, find_flag, list_info;

       list_info= judge_list_empty(list);

       if(list_info!= 1)

       {

              printf("Modifylist data wrong!\n");

              return-1;

       }

       find_flag= 0;

       for(i= 0; i < list->length; i++)

       {

              if(list->data[i]== data)

              {

                     printf("Finddata in location %d\n",i+1);

                     find_flag= 1;

              }

       }

       if(find_flag== 0)

       {

              printf("Notfind data!\n");

       }

       return1;

}

/*Traverse a data from list*/

int traverse_list_data(NODE *list)

{

       inti, list_info;

       list_info= judge_list_empty(list);

       if(list_info!= 1)

       {

              printf("Modifylist data wrong!\n");

              return-1;

       }

       printf("Traverselist data as follow!\n");

       for(i= 0; i < list->length; i++)

       {

              printf("%d",list->data[i]);

       }

       printf("\n");

       return1;

}

/*Free list mem*/

int free_list(NODE *list)

{

       if(list== NULL)

       {

              printf("Thelist is exist!\n");

              return-1;

       }

       free(list);

       list= NULL;

       return1;

}


猜你喜欢

转载自blog.csdn.net/weixin_42048417/article/details/80245202