数据结构

线性表

作为线性结构的一种,线性表是一种最简单最常用的数据结构
在c语言c99标准以前是没有引用的所以按照数据结构书中的方法编写无限报错,最后换了一种思维方式所谓的数据结构,不是强调语言而是数据结构,所以思维对了实现方法是可以多种多样的。

#include<stdio.h>
#include<stdlib.h>
#define MAX_LEN 10
enum bool {false,true};
typedef int Status;
typedef struct{
    char data[MAX_LEN];
    int index;
    }List;

void InitList(List *,int,char []);
void ClearList(List *);
enum bool ListEmpty(List *);
void GetEmpty(List,int,char * );
int LocateElem(List,char);
void PriorElem(List,char,List *);
void NextElem(List,char,List *);
void ListInsert(List *,int,char);
void ShowList(List);

void InitList(List *l,int i,char c[]){
        l->index = i;
        for(int i=0;i<l->index;i++){
                l->data[i]=c[i];
            }
    }
void CleartList(List *l){
    int i =0;
    while(!ListEmpty(l)){
        l->data[i++] = '\0';
    }
        l->index = 0;
    }
enum bool ListEmpty(List *l){
    if(l->data[0]=='\0'&&l->index==0){
        return true;
        }
    return false;
    }
void GetEmpty(List l,int i,char *e){
        if(ListEmpty(&l)){
            printf("list is empty\n");
            return;
        }
        e = &l.data[i];
        printf("Get element : %c\n",l.data[i]);
    }
void ShowList(List l){
        printf("List elem:");
        for(int i=0;i<l.index;i++){
            printf("%c\t",l.data[i]);
        }
        printf("\n");
    }
int LocateElem(List l,char e){
    if(!ListEmpty(&l)){
        for(int i=0; i < l.index;i++){
            if(l.data[i]==e){
                printf("The %c at %d\n",e,i);
                return i;
                }
            }
            return -1;
        }
    return -1;
    }
void PriorElem(List l,char e,List *l1){
    if(!ListEmpty(&l)&&(LocateElem(l,e)+1)){
            int i = LocateElem(l,e);
            for(int j = 0; j<i;j++){
                l1->data[j]=l.data[j];
                }
            l1->index = i;
        }
    }
void NextElem(List l, char e, List *l1){
        if(!ListEmpty(&l)&&(LocateElem(l,e)+1)){
            int i = LocateElem(l,e);
            for(int j = l.index; j>=i;j--){
                l1->data[j]=l.data[j];
                }
            l1->index =l.index - i;
        }
    }
void ListInsert(List *l,int index,char e){
        if(0<index&&index<l->index&&l->index<MAX_LEN-1){
            for(int i = l->index; i>=index;i--){
                l->data[i] = l->data[i-1];
                }
            l->data[index] = e;
            l->index++;
        }
    }
int main(){
    List l={};
    int len = 5;
    char e1;
    char c[] = {'a','b','c','d','e'}; 
    InitList(&l,len,c);
    ShowList(l);
    GetEmpty(l,2,&e1);  
    LocateElem(l,'c');
    List l1 = {};
    NextElem(l,'b',&l1);
    ShowList(l1);
    List l2 = {};
    PriorElem(l,'d',&l2);
    ShowList(l2);
    ListInsert(&l,2,'j');
    ShowList(l);
    CleartList(&l);
    ShowList(l);
    }


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容