数据结构(C语言版) 线性表顺序表示与实现

来源:互联网 发布:电脑管家mac版 编辑:程序博客网 时间:2024/04/30 16:48

终极版
#include <cstdlib>#include <cstdio>#include <iostream>#include <windows.h>#define  TRUE 1#define  FALSE 0#define  OK 1#define  ERROR 0#define  INFEASIBLE -1#define  OVERFLOW -2#define LIST_INIT_SIZE 100#define LISTINCREMENT 10//Status是函数的类型,其值是函数结果状态代码typedef  int  Status;typedef int ElemType;typedef struct{  ElemType *elem;  int length;  int listsize;}SqList;using namespace std;Status InitList(SqList &L){  L.elem=(ElemType *) malloc(LIST_INIT_SIZE*sizeof(ElemType));  if (!L.elem)    exit(OVERFLOW);  L.length=0;  L.listsize=LIST_INIT_SIZE;  return OK;}Status ListInsert_Sq(SqList &L, int i, ElemType e) {     ElemType *newbase, *p,*q;     if (i<1||i>L.length+1)        return ERROR;    if (L.length>=L.listsize)     {        newbase = (ElemType *)realloc(L.elem,                                      (L.listsize+LISTINCREMENT)*sizeof(ElemType)) ;        if  (!newbase) exit (OVERFLOW);        L.elem = newbase;        L.listsize=L.listsize+LISTINCREMENT;      }      q=&(L.elem[i-1]);    for (p=&(L.elem[L.length-1]);p>=q; --p) *(p+1)=*p;        *q=e;        L.length++;     return OK;  }Status ListDelete_Sq(SqList &L, int i, ElemType &e)   {          ElemType *p,*q;          if ((i<1)||i>L.length) return ERROR;          p=&L.elem[i-1];          e=*p;          q=L.elem+L.length-1;          for (++p; p<=q; ++p)            *(p-1)=*p;          --L.length;         return OK;}  //ListDelete_SqStatus out(SqList L){    cout << "该链表中含有的元素:" << endl;    for(int i = 0;i < L.length;i++)        cout << L.elem[i] << " " ;    cout << endl;}Status in(SqList &L, int i){    cout << "请依次" << i << "个输入数据" << endl;    for(int j = 0;j < i; j++)    cin >>  L.elem[j];    L.length = i;    return OK;}int main(){    SqList L;    InitList(L);    while(1)    {        int i = 0;        cout << "请选择操作:" << endl        << "1.输入数据" << " "        << "2.插入数据" << " "        << "3.删除数据" << " "        << "4.输出" << " "        <<"5.结束"<< endl;        cin >> i;        if(i == 1){            int num = 0;            cout << "请输入需要输入的个数:" << endl;            cin >> num;            in(L,num);        }        if(i == 2){            int h,e;            cout << "请输入插入位置和插入元素:" << endl;            cin >> h >> e;            ListInsert_Sq(L,h,e);        }        if(i == 3){            int h,e;            cout << "请输入删除位置:" << endl;            cin >> h;            ListDelete_Sq(L, h, e);        }        if(i == 4){            out(L);        }        if(i == 5) break;        cout << "任意键进行下一步:\n";        getchar();        getchar();        system("cls");    }    cout << "game over" << endl;    return 0;}

第一次写线性表,错了好几次,对函数里的特殊名称必须看着课本打,宏定义不会用,空格加一个,vc加多了过不了;

typedef int ElemType这条语句错三次,改了好几次,最后替换成int,再改回去编译过了,,,,,ZZ(回头问问老师)

#include <cstdlib>#include <iostream>#define TRUE 1     #define FALSE 0   // 正错#define OK 1#define ERROR 0    //状态#define INFEASIBLE -1  //不可行#define OVERFLOW -2    //溢出#define LIST_INIT_SIZE 100   //线性表存储空间的初始分配量#define LISTINCREMENT 10    // 线性表存储空间的分配增量// 一些常用表示typedef int ElemType;     //类型,可改为 double ,long long、、、、typedef int Status;       //状态typedef struct{int * elem;           //存储空间基址int length;           //当前长度int listsize;  //当前分配的存储容量(以sizeof(Elemtype)为单位)}SqList;                Status InitList(SqList &L){L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));//分配一个ElemType类型的LIST_INIT_SIZE长度的动态空间if(!L.elem) exit(OVERFLOW);//检查分配L.length = 0;//将当前长度赋值为0L.listsize = LIST_INIT_SIZE;//初始存储容量return OK;//创建成功,返回状态}using namespace std;int main(){SqList L;//定义一个链表InitList(L);//调用函数InitListreturn 0;}


0 0
原创粉丝点击