用C语言创建一个顺序表并完成插入等操作

作者&投稿:范彦 (若有异议请与网页底部的电邮联系)
用c语言创建一个顺序表,并完成创建,显示,查找,插入,删除,退出等任务~

#include
int n=0; //全局变量数组中元素个数
/***************************函数说明************************/
void insert(int * ss);
void show(int *ss);
void delete(int * ss);
void updata(int * ss);
/***************************主 函 数**************************/
main()
{
int bb[20]={0},j;
do
{
printf(" ╔-----------------------------------------------╗
"); //显示一个简易菜单
printf(" ┆ 1 --- 插入(Insert) ┆
");
printf(" ┆ 2 --- 修改(Update) ┆
");
printf(" ┆ 3 --- 删除(Delete) ┆
");
printf(" ┆ 4 --- 显示( Show ) ┆
");
printf(" ┆ 5 --- 退出( Exit ) ┆
");
printf(" ╚-----------------------------------------------╝
");
printf("请输入所要进行的操作序号: ");
scanf("%d",&j); //接受用户的选择
switch(j) //接受用户的函数
{case 1:insert(bb);
break;
case 2:updata(bb);
break;
case 3:delete(bb);
break;
case 4:show(bb);
break;
case 5:break;
default:printf("错误选择!请重选
");break;
}
}while(j!=5); //直到i被赋值为5
return 0;



}

/**********************************插入函数**************************************/

void insert(int * ss)
{
int i,e,k=n; // i为要插入的位置 e为要插入的值
do{
printf("请输入要插入的位置: ");
scanf("%d",&i);
//插入的位置为从 1-----n+1 超出则提示输入有误
if((i>(k+1))||i==0) printf("输入有误!!
");
}while((i>(k+1))||i==0);//直到输入的i值为 1---k+1
do{
ss[k+1]=ss[k]; //ss[i]后面的元素向后移动
}while((k--)!=(i-1));
printf("请输入要插入的值: ");
scanf("%d",&e);
ss[i-1]=e;
n++;
}

/**********************************显示函数**************************************/
void show(int *ss)
{
int i=0;
for(i;i<n;i++)
{
printf(" %d ->",ss[i]);
} //printf("\b");
printf("
");
}
/**********************************删除函数**************************************/

void delete(int * ss)
{
int i,t;
do{
printf("请输入要删除的位置: ");
scanf("%d",&i);
if(i>n) printf("输入有误!! 请重新输入: ");
}while(i>n);
t=i-1;
do{
ss[t]=ss[t+1];
}while((t++)!=n);
n--;
}
/**********************************修改函数**************************************/
void updata(int * ss)
{
int i,e;
do{
printf("请输入要修改的位置: ");
scanf("%d",&i);
if(i>n) printf("输入有误!! 请重新输入: ");
}while(i>n);
printf("请输入要修改后的值: ");
scanf("%d",&e);
ss[i-1]=e;

}

#include #define LIST_INIT_SIZE 10#define LISTINCREMENT 10#define ERROR 0typedef struct{ int *elem; int length; int listsize;} SqList;void InitList_Sq(SqList *l){ l->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); if(!l->elem) exit(0); l->length=0; l->listsize=LIST_INIT_SIZE;}int InList(SqList *l){ int *p,*newbase; p=l->elem; while(1) { for(;pelem+l->listsize;p++) { scanf("%d",p);if(*p==-1) break;l->length++; } if((p==l->elem+l->listsize)) { newbase=(int *)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int)); p=l->elem+l->length; l->listsize=l->listsize+LISTINCREMENT; if(!l->elem) return ERROR; } if(*p==-1) break; } return 1; }void PrList(SqList *l){ int *p,i; p=l->elem; for(;pelem+l->length;p++) printf("%d ",*p);}int ListInsert_sq(SqList *l,int i,int e){ int *newbase,*p,*q; if(il->length) return ERROR; if(l->length==l->listsize) { newbase=(int *)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase) return ERROR; l->elem=newbase; 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+=1; return 1;}int ListDelet_sq(SqList *l,int i){ int *p,e; if((il->length)) return ERROR; p=l->elem+i-1; e=*p; for(;pelem+l->length-1;p++) *p=*(p+1); l->length--; printf("要删除的元素是:%d
",e); return 1;}void main(){ int i,j,n; char a; SqList la; InitList_Sq(&la); printf("请输入顺序表中的元素:
"); if(!InList(&la)) return ERROR; do { printf("请输入需要插入元素的位置及元素:(a,b)
"); scanf("%d,%d",&i,&j); if(!ListInsert_sq(&la,i,j)) return ERROR; printf("是否还需要插入元素?(N/Y)"); getchar(); scanf("%c",&a); if(a=='N'||a=='n') break; }while(1); do { printf("请输入需要删除元素的位置:
"); scanf("%d",&i); if(!ListDelet_sq(&la,i)) return ERROR; printf("是否还需要删除元素?(N/Y)"); getchar(); scanf("%c",&a); if(a=='N'||a=='n') break; }while(1); printf("最后的顺序表为:
"); PrList(&la); }

/*

GY52122008

请输入插入字符 : -

请输入插入位置 : 7

GY5212-2008

Press any key to continue

*/

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

#define maxsize 100

typedef struct {
char *data;
int length;
}sqlist;

void initlist(sqlist *&L) { //初始化顺序表
L = (sqlist *)malloc(sizeof(sqlist));
L->data = (char *)malloc(maxsize);
L->length = 0;
}
void createlist(sqlist *&L,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--) L->data[j] = L->data[j - 1];
L->data[i] = e;
L->length++;
return true;
}
bool listdelete(sqlist *&L,int i,char &e) { //删除数据元素
int j;
if(i < 1 || i> L->length) return false;
i--;
e = L->data[i];
for(j = 1;j < L->length - 1;j++) L->data[j] = L->data[j + 1];
L->length--;
return true;
}
int listlength(sqlist *L) { //求线性表长度
return(L->length);
}
void destroylist(sqlist *&L) {
free(L);
}
int locateelem(sqlist *L,char e) { //按元素查找
int i = 0;
while(i < L->length && L->data[i] != e) i++;
if(i >= L->length) return 0;
else return i + 1;
}
void displist(sqlist *L) {  //输出线性表
int i;
for(i = 0;i < L->length;i++) printf("%c",L->data[i]);
printf("
");
}

int main() {
int pos,len;
char ch,data[50] = "GY52122008";
sqlist *L;
initlist(L); // 先初始化
len = strlen(data);
createlist(L,data,len); // 创建表
displist(L);
printf("请输入插入字符 : ");
scanf("%c",&ch);
printf("请输入插入位置 : ");
scanf("%d",&pos);
if(listinsert(L,pos,ch)) displist(L);
else printf("插入操作失败。
");
free(L->data);
free(L);
return 0;
}


我不太确定是不是正确的理解了你的意思。
你的插入函数 listinsert() 是没有错误的。如果你想调用的话,必须在main函数里面对一个已存在的线性表调用,因为你的listinsert函数没有创建表的功能。提醒你一下,调用函数的时候注意参数的传入,如果创建表和初始化表没问题,就是传入的参数是错的,你可以debug进去看一下。

另外,线性表有两种,顺序线性表和链表(单链表和双链表),你的是顺序线性表。

在倒数第二行 你为什么让char接收bool型呢???

第一次看到这样的代码。。顺序表。。。不就是链表么?你的指针域呢?没指针怎么和后面的结点连起来?


求问,C语言怎么设计一个程序,输入一个大写字母,从这个字母开始,按顺 ...
include <stdio.h> void main(){ char x;printf("请输入大写字母¸:\\n");scanf("%c",&x);while(x>='A') \/\/与A比较,未到A就继续输出,如果有不明这一步,请去了解ASCII码表中大写字母的码值.{ printf("%c ",x); \/\/强制输出字母 x--; \/\/递减,即D->C->B->A } }...

...按顺序每四个为一块,进行排序。C语言或C++如何编写程序,求大神帮 ...
include "stdio.h"#include "stdlib.h"#include "time.h"void mysort(int *p){ int i,j,k; for(i=0;i<3;i++){ for(k=i,j=k+1;j<4;j++) if(p[k]>p[j]) k=j; if(k-i) j=p[i],p[i]=p[k],p[k]=j; }}int main(void){ int x[...

c语言,写一个函数,用起泡法对输入的10个字符按从小到大顺序排列
{ char str[11];printf("Please enter 10 charactor: "); \/\/输入10个字符 gets(str);sort(str, 10); \/\/调用排序函数 system("pause");return 0;} \/\/排序函数(起泡法)void sort(char s[], int n){ for (int i=0; i<n-1; i++)for (int j=0, t; j<n-1-i; s[...

用C语言实现线性表的顺序存储(创建,插入,删除和查找)
用C语言实现线性表的顺序存储(创建,插入,删除和查找)  我来答 3个回答 #热议# 武大靖在冬奥的表现,怎么评价最恰当? 百度网友38c8e98 2011-09-25 · TA获得超过2616个赞 知道小有建树答主 回答量:1126 采纳率:0% 帮助的人:1267万 我也去答题访问个人页 关注 展开全部 \/\/C++课程设计-...

用C语言编写这样一个程序:任意的写出n个整数,对它们进行比较大小并把它...
for(i=0;i<n-1;i++){ k=i; \/*给记号赋值*\/ for(j=i+1;j<n;j++)if(a[k]>a[j])k=j; \/*是k总是指向最小元素*\/ if(i!=k){ \/*当k!=i是才交换,否则a[i]即为最小*\/ temp=a[i];a[i]=a[k];a[k]=temp;} } } int main(void){ \/\/定义排序数据的个数 int ...

用C语言编写一个程序,将一个数组内下标为奇数的数组元素按照从小到大的...
include<stdio.h> int main(){ int a[7] ;int i , j , temp ;for( i = 0 ; i < 7 ; i ++ ){ scanf("%2d" , &a[i] ) ;} for( i = 1 ; i < 7 - 1 ; i += 2){ for( j = 1 ; j < 7 - 1 - i ; j += 2){ if(a[j] > a[j+2]){ temp =...

如何用C语言将一列数据进行顺序存储?
"\\n");for(i=0;i<150;i++)fprintf(fout,"%8d",b[i]);fprintf(fout,"\\n");return 0;} void sort(int a[150]){int i,j;int temp;for(j=0;j<=149;j++){ for (i=0;i<150-j;i++)if (a[i]>a[i+1]){ temp=a[i];a[i]=a[i+1];a[i+1]=temp;} } } ...

c语言简单的顺序表,输了一个数据就退出了,可以帮我看一下哪里出错了吗...
链表的节点也就是结构体应该包含一个指针成员作为链表指针,指向其它节点这样来构成链表。比如你代码中结构体 ,你想让每个节点都保存一个字符,那么结构体就该定义成:typedef struct seqlist { char data;struct seqlist*next;}SeqList;这里成员变量next就是一个链表指针,之后你要构建最简单的单向链表,...

c语言:输入一个五位整数将数中的五个数值进行从大到小的顺序排序形成一...
根据题意得到如下代码:include <stdio.h>int getMaxFive(int n){ int a[5], i, j, k = 0, t; while (n!=0){ a[k] = n%10; n \/= 10; k++; } if (k != 5)return -1; for (i = 0; i < k; ++i){ for (j = 0; j < k-i-1;...

C语言中生成1个0到1的随机数要执行什么语句啊?
C语言中生成1个0到1的随机数可以执行语句:float b=rand()\/(RAND_MAX+1.0);解析:标准C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。rand()函数没有输入参数,直接通过表达式rand()来引用;用函数rand取得的随机数除以(...

长岭县18780744733: 用C语言创建一个顺序表并完成插入等操作 -
窦怜易周: /* GY52122008 请输入插入字符 : - 请输入插入位置 : 7 GY5212-2008 Press any key to continue */ #include #include #include #define maxsize 100 typedef struct { char *data; int length; }sqlist; void initlist(sqlist *&L) { //初始化顺序表 L = (sqlist *)...

长岭县18780744733: 用c语言创建一个顺序表,并完成创建,显示,查找,插入,删除,退出等任务 -
窦怜易周: #include<stdio.h> int n=0; //全局变量数组中元素个数 /***************************函数说明************************/ void insert(int * ss); void show(int *ss); void delete(int * ss); void updata(int * ss); /***************************主 函 数**************************/...

长岭县18780744733: 基于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("位置错"...

长岭县18780744733: 用C语言编写程序实现顺序表的插入操作,并且从键盘读取元素给顺序表初始化.(要求用VC++工具编写) -
窦怜易周: 在你的基础上改的 #include<stdio.h> #include<stdlib.h>#define LISTSIZE 100 #define ADD 10 typedef struct {int *elem;int length;int listsize; }List;//定义线性表的结构体 void SqList(List &L) { //int i;//C++中C程序的变量定义放在开始 L.elem=(...

长岭县18780744733: 用C语言建立一个顺序存储的线性表并实现线性表的插入和删除操作 -
窦怜易周: 此顺序表实现了多个功能,代码很完善,我将其改成从键盘输入跟选择删除了,你根据你的需要自己再进行修改. //common.h文件,头文件 #ifndef _COMMON_H_ #define _COMMON_H_#include <stdio.h> #include <stdlib.h> #include <strings...

长岭县18780744733: 用c语言编一个顺序表 -
窦怜易周: 就编一个顺序表?那直接定义个数组也算是顺序表了.下面是我学数据结构做练习时写的顺序表的建立、插入、删除等操作的代码:#include<stdio.h> #define MAXSIZE 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR ...

长岭县18780744733: c语言实现顺序表建立,插入,删除功能,要求变量为结构 -
窦怜易周: #include <stdio.h>#include <malloc.h>#include <stdlib.h> typedef struct Node { int id; int time; int sex; int jb; int fangjian; struct Node *next; }SLNode; void ListInitiate(SLNode * * head) { if((*head = (SLNode * )malloc(sizeof(SLNode))) == NULL) exit(1)...

长岭县18780744733: 求高手用C写一段线性表的顺序存储(包括创建,插入,删除和查找),不用很复杂,最简单的就可以了! -
窦怜易周: #include<malloc.h> /* malloc()等 */ #include<stdio.h> /* EOF(=^Z或F6),NULL */ #include<stdlib.h> /* atoi() */ #include<io.h> /* eof() */ /* 函数结果状态代码 */ #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define ...

长岭县18780744733: 用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 #include #define MAX_SIZE 10 typedef int ...

长岭县18780744733: 用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 <...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网