用C语言编写一个有关顺序表的程序代码

1、创建一个顺序表,其数据元素类型为整型;
2、在该顺序表中插入数据(由运行时用户输入);
3、删除顺序表中的某一个元素(由用户输入第几个元素);
4、遍历整个顺序表,并将每一个元素乘2;
5、遍历输出整个顺序表。

#include <stdio.h>
#include <malloc.h>

#define MaxSize 50

typedef char ElemType;

typedef struct
{
ElemType elem[MaxSize];
int length;
}SqList;

void InitList(SqList *L) /* 初始化顺序表 */
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}

void CreateListR(SqList *L,ElemType a[],int n) /*创建顺序表 */
{

int i;
for(i=0;i<n;i++)
L=(SqList *)malloc(sizeof(SqList));
L->elem[i]=a[i];
L->length++;
}

void DispList(SqList *L) /* 输出顺序表 */
{
int i;
if(ListEmpty(L)) return;
for(i=0;i<L->length;i++)
printf("%c",L->elem[i]);
printf("\n");
}

int ListLength(SqList *L) /* 求顺序表的长度 */
{
return(L->length);
}

int ListEmpty(SqList *L) /* 求顺序表是否为空 */
{
return(L->length==0);
}

int GetElem(SqList *L,int i,ElemType e) /*求顺序表中某个数据的元素值 */
{
if(i<1||i>L->length)
return 0;
else
e=L->elem[i-1];
return 1;
}

int LocateElem(SqList *L,ElemType e) /*按值查找元素*/
{
int i=0;
while(i<L->length&&L->elem[i]!=e) i++;
if(i>=L->length)
return 0;
else
return i+1;
}

int ListInsert(SqList *L,int i,ElemType e) /*按i位置插入元素*/
{
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=L->length;j>i;j--)
L->elem[j]=L->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}

int ListDelete(SqList *L,int i,ElemType e) /*删除某个位置的元素*/
{
int j;
if (i<1||i>L->length)
return 0;
i--;
e=L->elem[i]; /*e中的放elem[i]有何用..以后没用到*/
for(j=i;j<L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}

void DestroyList(SqList *L) /*销毁链表*/
{
free(L);
}

void main()
{
SqList L;
ElemType a[]={'a','b','c','d'};
int c;
int e;
while(1)
{
printf("Please Choose the step you want ?\n\n");
scanf("%d",&c);
if(c==0) break;
switch(c)
{
case 1: InitList(&L);break;
case 2: CreateListR(&L,a,4);break;
case 3: DispList(&L);break;
case 4: printf("long %d", ListLength(&L));break;
case 5: printf("%d",ListEmpty(&L));break;
case 6: GetElem(&L,3,e);break;
case 7: LocateElem(&L,'a');break;
case 8: ListInsert(&L,4,'f');break;
case 9: DispList(&L);break;
case 10: ListDelete(&L,3,e);break;
case 11: DispList(&L);break;
case 12: DestroyList(&L);break;
default: printf("error data");break;
}

}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-15
#include<stdio.h>
#include<stdlib.h>

#define Size 50

//定义顺序表结构体类型

typedef struct Table{
int*head;//顺序表头指针,为整型
int length;//顺序表中元素个数
int size; //顺序表的长度
}Table;

//创建顺序表
Table CreateTable(){
Table T;
if(!(T.head=(int*)malloc(Size*sizeof(int)))){
printf("内存分配错误!\n");
exit(0);
}

T.size=Size;
T.length=0;
return T;
}

//增加
void Insert(Table T,int set,int values)//set为插入的位置,values为值
{
//首先判断插入位置是否正确
if(set<0||set>T.length){
printf("插入位置不正确!\n");
reutrn;
}

//判断是否有足够的内存空间存储增加的数
if(T.length==T.size){
if(!(T.head=(int*)realloc(T.head,(T.size+10)*sizeof(int)))){
printf("内存分配错误!\n");
exit(0);
}
T.size+=10;
}

//插入数据
for(int i=s.length;i>set;i--)
T.head[i]=T.head[i-1];

T.head[set]=values;
T.length++;
}

//删除
void Delete(Tabel T,int set)
{
if(set<0||set>=T.length)
{
printf("删除数的位置不争确,删除失败!\n");
return;
}

//输出数据
for(int i=set;i<s.length;i++)
T.head[i]=T.head[i+1];
T.length--;
}

//查找
int Search(Tabel T,int value)
{
for(int i=0;i<T.length;i++)
if(T.head[i]==value)
return i;
return -1;
}

用C语言编写一个有关顺序表的程序代码
if(i<1||i>L->length+1)return 0;i--;for (j=L->length;j>i;j--)L->elem[j]=L->elem[j-1];L->elem[i]=e;L->length++;return 1;} int ListDelete(SqList *L,int i,ElemType e) \/*删除某个位置的元素*\/ { int j;if (i<1||i>L->length)return 0;i--;e=L-...

用c语言编写一段程序,建立一个顺序表(需要自己输入数据,并插入数据...
*newbase; p=l->elem; while(1) { for(;p<l->elem+l->listsize;p++) { scanf("%d",p);if(*p==-1) break;l->length++; } if((p==l->elem+l->listsize)) { newbase=(int *)realloc(l->elem,

顺序表的循环移位(C++或者C语言)
int i,j,t;for(j=1;j<=n;j++){ t=ar[0];for(i=1;i<length;i++)ar[i-1]=ar[i];ar[length-1]=t;} for(i=0;i<length;i++)printf("%d ",ar[i]);} 新手,想了很久才弄出来的,代码有点复杂。

是C语言中建立顺序表的程序
}Seqlist;\/\/定义Seq这个新的数据类型 void creat(Seqlist &L);\/\/建立线性表 void show(Seqlist L);\/\/显示线性表 int main(){ Seqlist L;L.length=0;\/\/初始化线性表的长度为0 creat(L);show(L);return 0;} void creat(Seqlist &L){ int a;printf("请输入要创建的元素的个数:\\t"...

用C语言创建一个顺序表并完成插入等操作
char a[],int n) { \/\/建立顺序表int i;for(i = 0;i < n;i++) L->data[i] = a[i];L->length = n;}bool listinsert(sqlist *&L,int i,char e) { \/\/插入数据元素int j;if(i < 1 || i > L->length + 1) return false;i--;for(j = L->length;j > i;j--)...

求高人帮编一个有关顺序表的C语言程序,望速回,非常感谢
void chazhao1(int a[])\/*顺序查找*\/ { int n=0,num;printf("请输入要查找的数:\\n");scanf("%d",&num);for(int i=0;a[i]!=0;i++)if(a[i]==num){ printf("第%d位为%d。\\n",i,num);n=n+1;} if(n==0)printf("没找到该数!\\n");} void chazhao2(int a[])\/...

用C语言实现顺序表的输入输出,哪位大神帮忙检查下,输出不对
L->elem) exit(OVERFLOW); \/\/分配空间失败L->length = 0; \/\/空表长度为0L->maxsize = LIST_INIT_SIZE; \/\/初始存储容量return L;}\/\/InitList_Sq\/\/建立新表 void Buid(SqList *L) {ElemType *newbase,data;printf("输入元素:");scanf("%d",&data);if(L->length >= L-...

用C语言编写程序实现顺序表的插入操作,并且从键盘读取元素给顺序表初...
q=&L.elem[i-1];for(p=&L.elem[L.length-1];p>=q;--p)(p+1)=*p;q=e;L.length++;return 1;}\/\/在线性表的第i个元素之前插入元素e void PrintList(List L){ printf("顺序表中的元素:\\n");for(int k=0;k<=L.length-1;k++)printf("%5d",L.elem[k]);printf("\\n");...

数据结构 用C语言实现顺序表的建立及遍历
include <stdio.h>#include <malloc.h>typedef struct nlist{ int *np; int len;\/\/已使用地址个数 int maxlen;\/\/最大地址个数}NLT;NLT *createlist();\/\/创建顺序表int addtolist(NLT *nlist);\/\/向顺序表插入元素void pList(NLT *nlist);\/\/遍历顺序表int main(){ int i...

用C语言实现顺序表的输入输出并计算表长度。
\/\/ 顺序表的创建,插入和删除,返回长度等 \/\/ 输出:\/\/ 输入数据[长度 数据1 数据2 ...]:\/\/ 5 1 2 3 4 5 \/\/ 1 2 3 4 5 \/\/ 1 45 2 3 4 5 \/\/ 1 45 3 4 5 \/\/ 实现已调试,希望采纳,如有问题,欢迎继续交流!include <stdio.h>#include <stdlib.h> define MAX_SIZE ...

相似回答