使用C语言编写程序,实现顺序表的基本运算——插入和删除。

使用C语言编写程序,实现顺序表的基本运算¬¬¬——插入和删除。:
1.编写一个程序,使用一维数组来表示线性表;
2.实现元素x的插入i位置操作。
3.实现元素ai元素的删除操作。

typedef struct
{
int *elem;
int length;
int listsize;
} Sqlist;
status Create_sq(Sqlist *L,int n)
{
int i;
L->elem=(int*)malloc(100*sizeof(int));
if(!L->elem) return 0;
for(i=0;i<n;i++)
scanf("%d",&(L->elem[i]));
L->length=n;
L->listsize=100;
return 1;
}
status Listinsert_sq(Sqlist *L,int i,int e)
{
int *q,*p,*newbase;
if(i<1||i>L->length+1) return 0;
if(L->length>=L->listsize)
{
newbase=(int*)realloc(L->elem,(L->listsize+10)*sizeof(int));
if(!newbase) exit(-2);
L->elem=newbase;
L->listsize+=10;
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return 1;
}
int main()
{
Sqlist L1;
int n,a;
int i,e;
printf("\n please input the number of data:\n");
scanf("%d",&n);
if(Create_sq(&L1,n)==1)
{
scanf("%d%d",&i,&e);
a=Listinsert_sq(&L1,i,e);
if(a==1)
printf("insert success\n");
else printf("insert false\n");
printf("the list elements are:\n");
for(i=1;i<=L1.length;i++)
{
printf("%d\t",L1.elem[i-1]);
}

}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-09
#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;
}

}

}
第2个回答  2009-04-09
学习了

用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语言编写程序实现顺序表的插入操作,并且从键盘读取元素给顺序表初...
void SqList(List &L){ \/\/int i;\/\/C++中C程序的变量定义放在开始 L.elem=(int *)malloc(LISTSIZE*sizeof(int));if(!L.elem) exit(0);L.listsize=LISTSIZE;\/\/printf("请输入线性表长度:");\/\/scanf("%d",&L.length);\/\/printf("为线性表赋值:");\/\/for(i=0;i<=L.length-1...

设计一个能进行顺序表基本运算的演示程序(C语言)
InitList(&num); \/*初始化顺序表*\/ for(i=0;i<10;i++) \/*建立顺序表*\/ { if(!ListInsert(&num,i+1,data[i])) \/*插入元素*\/ { printf("\\n运行错误!\\n");return 0;} } printf("\\n\\n删除前顺序表中元素\\n");TraverseList(num); \/*显示表中所有元素*\/ ...

用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语言的数据结构,怎样做顺序表插入
1、顺序表的插入,常用方法就是从插入点后平移数据。2、例如:void InsertSeqList(SeqList L, DataType x, int i){ \/\/将元素x插入到顺序表L的第i个数据元素之前 if(L.length==Maxsize) exit("表已满");if(i<1||i>L.length+1) exit("位置错");for (j=L.lenght; j>=i;...

你好,数据结构(C语言)中实现有序链表的插入,删除结点基本操作,及两个有...
void del(); \/\/用于删除结点,用于参赛选手的删除void search(); \/\/参赛选手成绩的查询void print(); \/\/用于输出链表void rank(); \/\/按个人平均成绩从高到低的顺序进行排序void update(); \/\/参赛选手的修改void menu(); \/\/操作系统菜单界面void menu_select(); \/\/菜单选择界面void browse(); \/\/选手...

用C语言编写一个有关顺序表的程序代码
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...

求C语言顺序表的程序,有插入功能的
int ListDelete_Sq(SqList &L,int i,ElemType &e){ \/\/从线表中删除一个元素 int *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_Sq int LocateElem_Sq(...

谁能帮我用C语言做一个顺序表的超市管理系统,需要能进行增,删,改,查...
void del(linklist*p);删除商品信息!void sort(linklist*p);\/\/排序 void find(linklist*p);\/\/查找(里面包含输出)void output(linklist*p);\/\/输出函数 int menu()void main()ok!你自己会写了ba?我做了一个学生信息管理系统你看看吧可以参考下!include<stdio.h> include<stdlib.h> inclu...

删除顺序表中的第i个元素,,给个完整的 C语言代码吧~~~ 谢谢
int elem[MAXSIZE];int last;} SeqList;void deletelist(SeqList *l,int i,int k);int main(){ int i,k,j=0;SeqList *l;SeqList a;l=&a;scanf("%d%d",&i,&k);\/\/输入i和k while(scanf("%d",&l->elem[j])!=EOF)j++;\/\/输入顺序表内容 l->last=j-1;deletelist(l,i,k...

相似回答