导航:首页 > 源码编译 > 如何用c编译顺序表的输入内容

如何用c编译顺序表的输入内容

发布时间:2022-11-15 17:28:59

Ⅰ 用C语言建立一个顺序表,输入n个数并输出。程序编译没错,但运行不了,求指教。程序如下:

楼主你好
修改如下:
#include<stdio.h>
#include<malloc.h>
#define MaxSize 40 //顺序表存储空间的初始分配量 --> (1)可以将MaxSize调大点儿
typedef struct
{
int *p;
int data[MaxSize];
int length;
int listsize;
}SeqList;
void InitList(SeqList &x) //定义顺序表的初始化函数
//--> (2)这里应该是SeqList &x 需要址传递 值传递是不会改变实参值的
{
x.p=(int*)malloc(MaxSize*sizeof(int));
if(!x.p) printf("存储分配失败!");
x.length=0;
x.listsize=MaxSize;
}
int main()
{
SeqList L;
InitList(L);
int i,n,k;
printf("请输入顺序表的长度n:");
scanf("%d",&n);
if(n<=0)
{
printf("数据错误!\n");
return 0;
}
if(n>MaxSize)
{
L.p=(int*)realloc(L.p,n*sizeof(int));
if(!L.p)printf("存储空间扩展失败!\n");
L.listsize=n;
}
printf("请输入数据:");
for(i=0;i<=n-1;i++)
{
scanf("%d",&k);
L.data[i]=k;
L.length++;
}
printf("线性表为:");
for(i=0;i<=n-1;i++)
printf("%d ",L.data[i]);
printf("\n");
return 1;
}

请看注释(1)(2)

希望能帮助你哈^_^

Ⅱ 怎样用c语言实现用顺序表完成输入一串字符,在插入,计算长度,删除计算长度,最后输出,拜托拜托=v=

java">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#definemaxsize100
typedefcharelepmtype;
typedefstructsequlist
{
elepmtypedata[maxsize];
intnum;
//intlength;//和num的功能不是一样的么
}SeqList,*LinkList;
voidListInitiate(LinkList*L)//利用二级指针,初始化顺序表,你这里是想模仿我的那个二级指针方法吗?
{
(*L)=(LinkList)malloc(sizeof(SeqList));
(*L)->num=0;//初始化为0
}
voidInputSeqList(SeqList*L)//跟人家借一个输入函数
{
charstr[maxsize];
printf("输入字符串:");
gets(str);
for(inti=0;str[i]!='';i++){//这个地方用''字符就好了,因为字符数组或者字符串的结束符都是
L->data[i]=str[i];
L->num++;
}
}
intInsertList(SeqList*L,inti,elepmtypex)/*i取值从0到maxsize-1*/
{
intj;
if(i<0||i>L->num+1)
{printf("error ");return(0);}/*检查插入位置的合理性*/
if((L->num==maxsize-1))/*表满则不能插入*/
{printf("插入位置错 ");return(0);}
for(j=L->num;j>=i;j--)/*结点后移,为插入腾出空间*/
L->data[j+1]=L->data[j];//这里应该是L->data不是List,而且向后移动数据的话
L->data[i]=x;//新元素插入
L->num++;/*调整last指向最后元素*/
return(1);/*成功返回1*/
}
//删除函数
intListDelete(SeqList*L,inti,elepmtype*x)//这是不是分号是逗号
{
intj;
if(L->num<0)
{
printf(" thelistisempty!");
return0;
}
elseif(i<0||i>L->num)//掉了一个>
{
printf(" thepositionisinvialid");
return0;
}
else
{
*x=L->data[i];//这里记录了x的值
for(j=i+1;j<=L->num;j++){
L->data[j-1]=L->data[j];//改成这样看着比较舒服
}
L->num--;

}
return1;
}
intListLength(SeqList*L)//这里怎么多了一个分号
{
returnL->num;
//inti;
//i=0;
//for(i=0;i<=n;i++)
//return(i);//return只会执行一次。
}
voidOutputSeqList(SeqList*L)
{
if(0==L->num)//你定义的是num啊,怎么又写成了last,代码乱入啊
return;

for(inti=0;i<L->num;i++){
printf("%c",L->data[i]);
}
printf(" ");
printf("字符串有%d个字符 ",ListLength(L));//你的函数的名字是ListLength,不是length
}
intmain()
{
SeqList*sq;
ListInitiate(&sq);//将sq指针的地址传给了SeqList**L,进行初始化,充当了一个全局变量的作用
//InitList(&sq);
InputSeqList(sq);
OutputSeqList(sq);
//InsertSeqList(sq,1,'a');
InsertList(sq,1,'a');
OutputSeqList(sq);
//DelSeqList(sq,2);
charc;
ListDelete(sq,2,&c);
OutputSeqList(sq);
printf("%c成功被删除 ",c);
system("PAUSE");
return0;
}
不懂的直接加Q,Q已给你私信

Ⅲ c语言顺序表的输入函数

建立方法很多,线性表是顺序表的顺序存储结构,这里我给你写个简单的例子参考一下,只要理解了,怎么写都不会错:具体代码如下: #include typedef struct{ int data[100]; int length; }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"); scanf("%d",&a); for(int i=0;i

Ⅳ c语言编程 运用顺序表实训字符串操作

#include<stdio.h>
#include<string.h>
void main()
{
int i;
char j, a[1000],b[1000];
gets(a);
strcpy(b, a);
printf("%d\n", strlen(a));
printf("插在第几个数后面,输个数字\n");
scanf("%d", &i);
printf("要插入的数字,输个字符\n");
while(getchar()!='\n');
scanf("%c", &j);
*(a+i)= j;
strcpy(a+i+1, b+i);
puts(a);
strcpy(b, a);
printf("删第几个数,输个数字\n");
scanf("%d", &i);
strcpy(a+i-1, b+i);
printf("删了之后\n");
puts(a);
printf("倒叙输出为\n");
for(i=strlen(a)-1; i!=-1 ; printf("%c", *(a+i--)));
printf("\n");

}

Ⅳ 用c语言编一个顺序表

就编一个顺序表?那直接定义个数组也算是顺序表了。下面是我学数据结构做练习时写的顺序表的建立、插入、删除等操作的代码: #include<stdio.h> #define MAXSIZE 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 typedef struct{ int elem[MAXSIZE]; int length; }SeqList; void init_SeqList(SeqList *l) {l->length=0;}/*顺序表初始化*/ int Insert_SeqList(SeqList *l,int i,int x) {int j; if(l->length==MAXSIZE-1) {printf("表满"); return OVERFLOW; } if(i<1||i>l->length+1) {printf("位置错"); return ERROR;} for(j=l->length;j>=i;j--) l->elem[j+1]=l->elem[j]; l->elem[i]=x; l->length++; return OK; }/*顺序表插入*/ int Delete_SeqList(SeqList *l,int i) {int j; if(i<1||i>l->length) {printf("不存在第%d个元素",i); return ERROR; } for(j=i;j<=l->length-1;j++) l->elem[j]=l->elem[j+1]; l->length--; return OK; }/*删除操作*/ int Location_SeqList(SeqList *l,int x) {int i=1; while(i<=l->length&&l->elem[i]!=x) i++; if(i>l->length) return -1; else return i; } void Create_SeqList(SeqList *l) {int i,n,m; printf("输入表的长度:\n"); scanf("%d",&n); l->length=n; printf("请输入数值:\n"); for(i=1;i<=n;i++) {scanf("%d",&m); l->elem[i]=m; } } void Print_SL(SeqList *l) {int i; printf("The List is:\n"); for(i=1;i<=l->length;i++) printf("%3d",l->elem[i]); } void main() {SeqList a; int i,x,ch; init_SeqList(&a); Create_SeqList(&a); printf("请选择:1.插入 2.删除: "); scanf("%d",&ch); switch(ch){ case 1:printf("请输入位置和数值:\n"); scanf("%d%d",&i,&x); Insert_SeqList(&a,i,x); break; case 2:printf("请输入要删除的位置\n"); scanf("%d",&i); Delete_SeqList(&a,i); break; default: exit(0); } Print_SL(&a); }

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

#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;
}

}

}

Ⅶ 基于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;j--)
L.data[j]=L.data[j-1]; //平移插入点之后的数据
L.data[i-1]=x; //在插入点插入数据
L.length++;
}
L.data[j]=L.data[j-1];的意思是把要插入的位置后的数据都依次往后面移动一位,比如要插入在第6个位置上,共8个数据的链表里,先把第8个数据复制到第9个位置上,在把第7个数据复制到第8个位置上,在把第6个数据复制到第7个位置上。这样第6个位置后就可以写入,覆盖掉以前的值就好了。这样做的意思是腾出可以插入的地方而不破坏数据的顺序排放。

Ⅷ c语言实现顺序表

--顺序表.h
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FLASE 0
typedef int Elemtype;
typedef int Status;

/*接口定义
Status InitList_Sq(SqList &L,int size,int inc);
void CreateList_Sq(SqList &L);
void print_Sq(SqList &L);
int Search_Sq(SqList L, Elemtype e);
Status DestroyList_Sq(SqList &L);
Status ClearList_Sq(SqList &L);
Status ListEmpty_Sq(SqList L);
int ListLength_Sq(SqList L);
Status GetElem_Sq(SqList L, int i, Elemtype &e);
Status PutElem_Sq(SqList &L, int i, Elemtype e);
Status Append_Sq(SqList &L, Elemtype e);
Status DeleteLast_Sq(SqList &L, Elemtype &e);
*/
--------------------
#include "顺序表.h"

//定义顺序表类型
typedef struct {
Elemtype *elem;
int length;
int listsize;
int increment;
}SqList;

//初始化顺序表
Status InitList_Sq(SqList &L,int size,int inc) {

L.elem = (Elemtype *)malloc(size * sizeof(Elemtype));
L.length = 0;
L.listsize = size;
L.increment = inc;
return TRUE;
}

//创建顺序表
Status CreateList_Sq(SqList &L) {
int i;
printf("请输入你要创建的顺序表元素个数:\n");
scanf_s("%d", &L.length);
if (L.length >= L.listsize) {
L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype));
}
if (!L.elem) {
return FLASE;
}
printf("请输入你要创建的顺序表:\n");
for (i = 0; i<L.length; i++) {
scanf_s("%d", &L.elem[i]);
}
}

//遍历顺序表
void print_Sq(SqList &L) {
int i;
for (i = 0; i<L.length; i++) {
printf("%4d", L.elem[i]);
}
}

//查找元素的位置
int Search_Sq(SqList L, Elemtype e) {
int i = 0;
while (L.elem[i] != e&&i<L.length) {
i++;
}
if (i>L.length)
return -1;
else
return i + 1;//因为C语言是从下标为0开始的,当i=0时表示第一个元素
}

//销毁顺序表
Status DestroyList_Sq(SqList &L) {
if (L.elem == NULL)
return -1;
else
free(L.elem);
printf("\n销毁成功\n");
return TRUE;
}

//清空顺序表
Status ClearList_Sq(SqList &L) {
if (L.elem == NULL)
exit(0);
int i;
Elemtype *p_elem = L.elem;
for (i = 0; i<L.length; i++) {
*L.elem = NULL;
L.elem++;
}
L.elem = p_elem;
}

//判断顺序表是否为空
Status ListEmpty_Sq(SqList L) {
int i;
Elemtype* p_elem = L.elem;
for (i = 0; i<L.length; i++) {
if (*L.elem != 0) {
L.elem = p_elem;
return FLASE;
}
L.elem++;
}
return TRUE;
}

//求顺序表的长度
int ListLength_Sq(SqList L) {
return L.length;
}

//用e返回顺序表L中第i个元素的值
Status GetElem_Sq(SqList L, int i, Elemtype &e) {
int j;
Elemtype* p_elem = L.elem;
if (i<1 || i>L.length)
return FLASE;
for (j = 1; j <= i; j++)
L.elem++;
e = *L.elem;
L.elem = p_elem;
return TRUE;
}

//将顺序表L中第i个元素赋值为e
Status PutElem_Sq(SqList &L, int i, Elemtype e) {
L.elem[i - 1] = e;
return TRUE;
}

//在顺序表L表尾添加元素e
Status Append_Sq(SqList &L, Elemtype e) {

L.elem[L.length] = e;
L.length++;
L.listsize += L.increment;
return TRUE;
}

//删除顺序表L表尾元素
Status DeleteLast_Sq(SqList &L, Elemtype &e) {
e = L.elem[L.length - 1];
L.length--;
return TRUE;
}

********************************************主函数.c*************************************************

#include <stdio.h>
#include <stdlib.h>
#include "顺序表.h"
#include "源代码.h"

//--------------------主函数入口--------------------

int main(){
SqList L;
int size, inc;
int e;
int a;
int length;
int i;
int temp;
int j=10;
int ee;
printf("\n--------------------顺序表初始化------------------\n");
printf("请输入顺序表的长度size以及扩容量:\n");
scanf_s("%d %d", &size, &inc);
InitList_Sq(L, size, inc);
CreateList_Sq(L);

printf("\n--------------------判断是否为空------------------\n");

if(ListEmpty_Sq(L)){
printf("该顺序表为空\n");
}
else
printf("该顺序表不为空\n");

printf("\n--------------------遍历顺序表--------------------\n");

printf("此时顺序表为:\n");
print_Sq(L);

printf("\n--------------------查找元素----------------------\n");

printf("\n请输入要查找的元素:\n");
scanf_s("%d",&e);
a = Search_Sq(L, e);
printf("%d为第%d位:\n",e,a);

printf("\n--------------------输出长度----------------------\n");

length = ListLength_Sq(L);
printf("顺序表的长度为%d\n",length);

printf("\n----------将顺序表L中第i个元素赋值为temp----------\n");

printf("请输入第i个元素的i值和temp值:\n");
scanf_s("%d %d",&i,&temp);
PutElem_Sq(L, i, temp);
printf("\n此时顺序表为:\n");
print_Sq(L);

printf("\n---------------在顺序表表尾添加元素---------------\n");

Append_Sq(L, j);
printf("\n此时顺序表为:\n");
print_Sq(L);

printf("\n---------------在顺序表表尾删除元素---------------\n");

DeleteLast_Sq(L, ee);
printf("\n被删除的元素为%d\n",ee);
printf("此时顺序表为:\n");
print_Sq(L);

printf("\n-------------------清空顺序表---------------------\n");

ClearList_Sq(L);
if(ListEmpty_Sq(L)){
printf("\n清空成功\n");
}

printf("\n------------------销毁顺序表----------------------\n");

DestroyList_Sq(L);
getchar();
getchar();
return 0;
}

Ⅸ 用c语言编写一段程序,建立一个顺序表(需要自己输入数据,并插入数据、删除数据)。

#include<stdio.h>
#defineLIST_INIT_SIZE10
#defineLISTINCREMENT10
#defineERROR0
typedefstruct{
int*elem;
intlength;
intlistsize;
}SqList;
voidInitList_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;
}
intInList(SqList*l)
{
int*p,*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,(l->listsize+LISTINCREMENT)*sizeof(int));
p=l->elem+l->length;
l->listsize=l->listsize+LISTINCREMENT;
if(!l->elem)returnERROR;
}
if(*p==-1)break;
}
return1;
}
voidPrList(SqList*l)
{
int*p,i;
p=l->elem;
for(;p<l->elem+l->length;p++)
printf("%d",*p);
}
intListInsert_sq(SqList*l,inti,inte)
{
int*newbase,*p,*q;
if(i<1||i>l->length)returnERROR;
if(l->length==l->listsize)
{
newbase=(int*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)returnERROR;
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;
return1;
}
intListDelet_sq(SqList*l,inti)
{
int*p,e;
if((i<1)||(i>l->length))returnERROR;
p=l->elem+i-1;
e=*p;
for(;p<l->elem+l->length-1;p++)
*p=*(p+1);
l->length--;
printf("要删除的元素是:%d ",e);
return1;
}
voidmain()
{
inti,j,n;
chara;
SqListla;
InitList_Sq(&la);
printf("请输入顺序表中的元素: ");
if(!InList(&la))returnERROR;
do
{
printf("请输入需要插入元素的位置及元素:(a,b) ");
scanf("%d,%d",&i,&j);
if(!ListInsert_sq(&la,i,j))returnERROR;
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))returnERROR;
printf("是否还需要删除元素?(N/Y)");
getchar();
scanf("%c",&a);
if(a=='N'||a=='n')break;
}while(1);
printf("最后的顺序表为: ");
PrList(&la);
}

阅读全文

与如何用c编译顺序表的输入内容相关的资料

热点内容
手机云视频加密怎么关 浏览:72
北京文件夹加密多少钱 浏览:671
什么是车鉴定app 浏览:66
战地一私人服务器怎么买 浏览:497
陈天程序员 浏览:833
编译原理如何运用到编程中 浏览:17
linux选择数据库 浏览:376
php两个数组差集 浏览:978
迷你pdf阅读器下载 浏览:433
做一个python小程序 浏览:655
pythonossystem和 浏览:645
win2008如何搭建ftp服务器 浏览:53
安卓手机为什么不翻牌 浏览:546
删除pkpm及相关文件夹 浏览:481
房贷解压银行内部流程 浏览:734
安卓手机如何更改语音 浏览:601
android红包实现 浏览:734
苹果的nvme为什么安卓不用 浏览:32
python输入单词统计个数 浏览:998
脚本软件提取源码 浏览:281