线性顺序表

来源:互联网 发布:python 日期加减 编辑:程序博客网 时间:2024/06/03 18:44

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构 ,C语言代码实现如下

#include <stdio.h>#include <stdlib.h>#define MAXLISTSIZE 1024 //数组大小//定义一个数据结构typedef struct {    int data[MAXLISTSIZE];//存储的数据放在数组里,int类型     int last;//数组的内容大小}LinearList;LinearList* list;//定义全局LinearList*void showList();void outputDoc();LinearList* createLinearList();void appendNode();void insertNode();void delNode();void operate();void showList(LinearList* l) {    printf("当前线性顺序表的状态:\n");    if(l->last == 0) {        printf("当前线性顺序表为null");    } else {        int i;        for(i = 0; i < (l->last); i++) {            printf("[%d]\t",l->data[i]);        }    }     printf("\n");}//打印说明文档void outputDoc() {    system("cls");    printf("线性顺序表演示:\n");    printf("a:追加一个节点;       i:插入一个节点\n");    printf("d:删除一个节点;       e:退出\n");}//创建线性顺序表LinearList* createLinearList() {    LinearList* list = (LinearList*)malloc(sizeof(LinearList));//分配LinearList结构大小的内存,并转换为LinearList指针类型    list->last = 0;//初始化数据(节点)大小     return list; } //追加数据void appendNode(LinearList* list, int data) {    if((list->last) < MAXLISTSIZE) {        list->data[list->last] = data;        list->last ++;    }} //插入数据,插入一个数据后,后面的数据全部向后移动一个节点 void insertNode(LinearList* list, int data, int pos) {    if(pos < 0 || pos > list->last || list->last == MAXLISTSIZE) {        char ch;        printf("所插数据超出范围!,q回到主界面!\n");        while(1) {            ch = getchar();            if(ch == 'q') {                operate();            }        }    } else {        int j;        for(j = list->last; j >= pos; j--) {    //j >= pos ,把pos位置的也向后移动            list->data[j+1] = list->data[j];    //循环后数组大小+1        }        list->data[pos] = data;     //数组默认从0开始,        list->last++;    } } //删除数据void delNode(LinearList* list,int pos){    if(pos < 0 || pos > list->last) {        printf("所要删除的数据不在范围内!");    } else {        int j;        for(j = pos; j < list->last; j++) { //j < list.last             list->data[j] = list->data[j+1];        }         list->last--;     } }//操作函数void operate(){    int data,pos;     char ch;        while(1) {        outputDoc();        showList(list);        ch = getchar();        switch(ch) {            case 'a':                printf("请插入数据:\n");                scanf("%d",&data);                appendNode(list,data);                break;            case 'i':                printf("请输入要插入的位置:\n");                scanf("%d",&pos);                printf("请输入要插入的数据:\n");                scanf("%d",&data);                insertNode(list,data,pos);                break;            case 'd':                printf("请输入要删除数据的位置:\n");                scanf("%d",&pos);                delNode(list,pos);                break;            case 'e':                system("exit");                break;            default:                printf("未知操作!\n");                break;         }     }}//主函数 int main() {     list = createLinearList();     operate();     return 0;}

运行之后

0 0