⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 线性表的顺序表示.cpp

📁 这是一个关于链表算法的程序
💻 CPP
字号:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define TRUE  1
#define FALSE 0
#define OK    1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW   -2

    typedef int Status;    //status 为函数类型 
	typedef char ElemType;   //ElmeType为数据元素类型 

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10  //定义空间 
typedef struct{
        ElemType *elem;    //存储空间基址 
        int length;         
        int listsize;     //容量 
        } SqList;
         
Status InitList_Sq(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){
       if (i<1||i>L.length+1)return ERROR;
       if(L.length>=L.listsize){
         ElemType *newbase=(ElemType *)realloc(L.elem,
            (L.listsize+LISTINCREMENT)*sizeof(ElemType));
       L.elem=newbase;
       L.listsize+=LISTINCREMENT;     
       }
       ElemType *q;
       ElemType *p;
       q=&(L.elem[i-1]);
       for(p=&(L.elem[L.length-1]);p>=q;--p)
       *(p+1)=*p;
       *q=e;
       ++L.length;
       return OK;
       }     //在线性表中插入新的元素 


int LocateElem_Sq(SqList L,ElemType e)
{
	int i=0,j=0;
	ElemType *p;
	p=L.elem;
	while(i<L.length)
	{
     if(e==*p)
     {j=i;break;}                        
    else 
    p++;i++;
    }
	if(i<=L.length) return j;
	else  return  0;
}     // 在线性表中查找元素  
      

Status ListDelete_Sq(SqList &L,int i,ElemType &e)
{
       
       ElemType *p=&L.elem[i-1],*q;
       if((i<1)||(i>L.length)) return ERROR;
     
       e=*p;
       q=L.elem+L.length-1;
       for(++p;p<=q;++p)
       *(p-1)=*p;
       --L.length;
       return OK;
}//删除元素 

int main()
{
    Status i=1,j,del;
    ElemType elem,ch=' ',e;
    SqList l;
    InitList_Sq(l);
	printf("\n首先创建了一个列表L:\n");
	printf("\n-------------------------\n \n");
    printf("请输入一串字符,以空格结束!\n");
    printf("\n-------------------------\n \n");
    	
  do
	{
	     elem=getchar();
		if(elem==ch)
	     break;
      ListInsert_Sq(l,i, elem);
	    i++;
	}while(1);
  
    printf("请输入要访问的字符:\n");
	getchar();
   scanf("%c",&e);
   
   j=LocateElem_Sq(l,e); 
   printf("你要访问的字符的位置是:%d",j+1);
   printf("\n------------------------\n");
   printf("请输入你要删除的字符的位置:");
   scanf("%d",&del); 
   ListDelete_Sq(l,del,e);
   printf("\n你删除的字符是%c",e);
   printf("\n");
   system("pause");
   
    return 0;
}                                       

        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -