顺序表C语言的程序代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

int ListInsert(SqList *L) { int *y,*q,*p,i,e;
// 在顺序线性表 L 的第 i 个元素之前插入新的元素 e, // i 的合法值为 1≤i≤ListLength(L)+1
printf ("请输入你要插入的数据序号:\n");ห้องสมุดไป่ตู้scanf ("%d",&i); if (1>i||(L->length+1)<i) { do{ // 判断输入的序号是否合格,若不合格请重新输入
printf ("你输入的数据有误!请重新输入:\n"); scanf ("%d",&i); }while(1>i||(L->length+1)<i); } printf ("输入的序号正确!\n 请输入你要插入的数据:\n"); scanf ("%d",&e); if(L->length>=L->listsize) { // 当前存储空间已满,增加容量 y=(int *)realloc(L->elem,(L->listsize+N)*sizeof(int));
int OutPut(SqList *L) { //输出数据 int i; for (i=0;i<L->length;i++) { printf ("%d",L->elem[i]); printf ("\n"); } return 1; }
int Find(SqList *L) { 的值 int i;
int main () { int i,e; SqList L; system("color 9F"); while(1) { menu(); printf ("\n\n\t\t\t 请输入的你的选择:"); scanf ("%d",&i); switch(i) { case 1: InitList(&L); printf ("构建一个空线性表完毕!\n"); system("pause"); break; case 2: IntPut(&L); system("pause"); break; case 3: printf ("你输入的数据如下:\n"); OutPut(&L); system("pause"); break; case 4: Find(&L); system("pause"); break; case 5: ListInsert(&L);
//----------------------------线性表的动态分配顺序存储结构------------------------# include "stdio.h" # include "malloc.h" # include "stdlib.h" # define M 5 # define N 2 typedef struct { int *elem; int length; int listsize; }SqList; //线性表存储空间的初始分配量 //线性表存储空间的分配增量 //存储空间基址 //当前长度 //当前分配的存储容量(以 sizeof(int)为单位)
//在顺序线性表 L 中查找第 i 个值,若找到,则打印出对应
printf ("请输入你要查找的数据序号:\n"); scanf ("%d",&i); if (1>i||L->length<i) { do{ //判断输入的序号是否合格,若不合格请重新输入
printf ("你输入的数据有误!请重新输入:\n"); scanf ("%d",&i); }while(1>i||L->length<i); } printf ("输入的序号正确!\n 你输入的序号所对应的数据是:\n"); printf ("%d\n",L->elem[i-1]); //打印出对应的值 return 0; }
int ListDelete(SqList *L,int &e) { int *p,*q,i;
// 在顺序线性表 L 中删除第 i 个元素,并用 e 返回其值。 // i 的合法值为 1≤i≤ListLength(L)
printf ("请输入你要删除的数据序号:\n"); scanf ("%d",&i); if (1>i||L->length<i) { do{ // 判断输入的序号是否合格,若不合格请重新输入
//主函数
//输入选择的功能序号
//建立线性表
//输入数据
//输出数据
//查找
//插入
printf ("你插入新数据后的结果如下:\n"); OutPut(&L);
system("pause"); break; case 6: ListDelete(&L,e); printf ("你删除的数据如下:\n"); printf ("%d",e); printf ("\n 你删除数据后的结果如下:\n"); OutPut(&L); system("pause"); break; default: printf ("退出!\n"); return 1; } } } //退出 //删除
void menu() { system("cls");
//菜单
printf ("\t|===========================================================|\t\n"); printf ("\t| |\t\n"); printf ("\t| 线性表的顺序表示与实现 |\t\n"); printf ("\t| |\t\n"); printf ("\t|===========================================================|\t\n"); printf ("\n\t printf ("\n\t printf ("\n\t printf ("\n\t } 【1】 【3】 【5】 【0】 建立线性表! \t\t\t【2】 输入数据!\n"); 输出数据! \t\t\t【4】 查找!\n"); 插入!\t\t\t\t【6】 删除!\n"); 退出程序!\n");
int InitList(SqList *L) { // 构造一个空的线性表 L L->elem=(int *)malloc(M*sizeof(int)); if(!L->elem) exit(-2); L->length=0; L->listsize=M; return 1; } // 存储分配失败 // 空表长度为 0 // 初始存储容量
printf ("你输入的数据有误!请重新输入:\n"); scanf ("%d",&i); }while(1>i||L->length<i); } printf ("输入的序号正确!\n"); p=&(L->elem[i-1]); e=*p; q=L->elem+L->length-1; for(++p;p<=q;++p) *(p-1)=*p; --L->length; return 1; } // p 为被删除元素的位置 // 被删除元素的值赋给 e // 表尾元素的位置 // 被删除元素之后的元素左移 // 表长减 1
int IntPut(SqList *L) { int i,e;
//输入数据
printf ("请输入你要输入数据的个数:\n"); scanf ("%d",&e); if (1>e||5<e) { do{ //判断输入数据的个数是否合格,若不合格请重新输入
printf ("你输入的数据有误!请重新输入:\n"); scanf ("%d",&e); }while(1>e||5<e); } printf ("输入正确!\n 请开始输入数据并用空格隔开:\n"); for (i=0;i<e;i++) { //开始输入数据 scanf ("%d",&L->elem[i]); L->length=L->length+1; } return 1; }
if(!y) exit(-2); L->elem=y; L->listsize+=N; }
// 存储分配失败 // 新基址 // 增加存储容量
q=&(L->elem[i-1]); // q 为插入位置 for(p=&(L->elem[L->length-1]);p>=q;--p) // 插入位置及之后的元素右移 *(p+1)=*p; if(L->length>6){ printf ("插入失败,线性表 L 已满!\n"); return 1; } *q=e; ++L->length; return 1; } // 插入 e // 表长增 1
相关文档
最新文档