顺序链表的基本操作

来源:互联网 发布:淘宝如何搜索小口栓 编辑:程序博客网 时间:2024/05/20 00:52
/*头文件*/#include <stdlib.h>#include <stdio.h>#define ERROR 0#define OK 1#define FALSE 0#define TRUE 1#define OVERFLOW -1#define MAXSIZE 10typedef int INT;typedef int Status;typedef int ElemType;typedef struct {    ElemType data[MAXSIZE];    INT length;}seqList;Status judge_List(seqList *l,int i); //判断操作位置的合法性void init(seqList *l); //初始化void print_List(seqList *l); //打印链表void create_List(seqList *l); //创建新链表Status insert_List(seqList *l,int i,ElemType e); //插入链表操作Status delete_List(seqList *l,int i); //删除操作/*Main*/#include "Seqlist.h"void init(seqList *l){    l->length = 7;    create_List(l);    return;}void create_List(seqList *l){    int i;    for(i =0;i<l->length-1;i++) {        l->data[i] = i+1;    }    return;}Status judge_List(seqList *l,int i){ //判断插入位置的合法性    if(i<1||i>l->length) {        return FALSE;    }    if(l->length==MAXSIZE) {        return FALSE;    }    if(l->length==0) {        return FALSE;    }    if(i<l->length) {        reutrn TRUE;    }    return TRUE;}Status insert_List(seqList *l,int i,ElemType e) {    int k ;    judge_List(l,i);    if(i<=l->length) {        for(k=l->length;k<l;k--) {//从链表尾遍历到当前位置            l->data[k] = l->data[k-1]; //把链表数据往后移到        }    }    l->data[i] = e;//插入    l->length ++;    return OK;}Status delete_List(seqList *l,int i){    int k ;    judge_List(l,i);    if(i<l->length) {        for(k=i;k<l->length;k++) { //从插入的位置开始往后移动一个位置            l->data[k-1] = l->data[k];        }    }    l->length--;    return OK;}void print_List(seqList *l){    int i;    for(i=0;i<l->length;i++) {        printf("%d\n",l->data[i]);    }}int main() {    seqList l;    init(&l);    //insert_List(&l,2,9);    delete_List(&l,2);    print_List(&l);    return 0;}


0 0
原创粉丝点击