⑴ 谁能发一个,用C++编写的顺序表程序,并为这个顺序表赋值,并对其一般的基本操作,谢谢!!
参考STL中的vector类(在includes/vector文件中找)
⑵ 数据结构顺序表的遍历操作要怎么写,急急急急!谢谢~
遍历就是输出所有数据的意思,我现在要赶作业!没时间帮你写!只能给你个参考代码!
#include<iostream>usingnamespacestd;#defineLIST_INT_SIZE100#defineLISTINCREMENT10#defineok1#defineOVERFLOW0typedefcharElemType;typedefintStatus;typedefstruct{ ElemType*elem; intlength; intlistsize;}SqList;StatusInitList_Sq(SqList&L){ L.elem=(ElemType*)malloc(LIST_INT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INT_SIZE; returnok;}StatusInitList_input(SqList&L){ inti=0; ElemTypec,*newbase; cout<<"请输入顺序表元素,以Y表示停止输入!"<<endl; while((cin>>c)&&(c!='Y')) { if(i>=L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase)exit(OVERFLOW); L.elem=newbase; cout<<"已经分配了内存!"<<endl; L.listsize+=LISTINCREMENT; } L.elem[i++]=c; } L.length=i; returnok;}StatusInlist_output(SqList&L)//这个就是遍历,输出的意思{ for(inti=0;i<L.length;i++) cout<<L.elem[i]<<""; cout<<endl; returnok;}StatusLIstInstert_Sq(SqList&L,inti,ElemTypee){ ElemType*newbase,*q,*p; if(i<1||i>L.length+1) { cout<<"插入的位置非法!"<<endl; exit(OVERFLOW); } if(L.length>=L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase)exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; cout<<"已经分配了内存!"<<endl; } q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;p–) *(p+1)=*p; *q=e; L.length++; returnok;}StatusLIst_Delete_Sq(SqList&L,inti,ElemType&e){ if(i<1||i>L.length) { cout<<"删除位置非法!"<<endl; exit(OVERFLOW); } ElemType*p,*q; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for(++p;p<=q;++p)*(p-1)=*p; L.length–; returne;}Statusmain(){ SqListL; ElemTypee,temp; inti; InitList_Sq(L); InitList_input(L); cout<<"输入的顺序表的元素是:"<<endl;Inlist_output(L); cout<<"请输入要插入的位置和元素!"<<endl; cin>>i>>e;LIstInstert_Sq(L,i,e); cout<<"插入后的顺序表元素为:"<<endl;Inlist_output(L); cout<<"请输入要删除的元素的位置"<<endl; cin>>i;cout<<"元素"<<(char)LIst_Delete_Sq(L,i,temp)<<"已经删除"<<endl; cout<<"删除元素后的顺序表的元素是!"<<endl;Inlist_output(L); return0;}//这是我写的。
//顺序表示很好理解的,相当于一个指针数组!
⑶ 顺序表的基本操作是什么
#define LIST_INTSIZE 50typedef char DataType;typedef struct{DataType* elem; //顺序表的基地址int length; //顺序表当前长度int listsize; //顺序表当前分配的存储容量}SeqList;int InitSeqList(SeqList* L) //初始化顺序表{L->elem=(DataType *)malloc((LIST_INTSIZE+1)*sizeof(DataType));if (L->elem==NULL) { cout<<"\t\t\t内存分配错误\n"; return 0; }L->length=0;L->listsize=LIST_INTSIZE;cout<<"\t\t\t内存分配成功";return 1;}int InsertSeqList(SeqList* L,int i,DataType x) //对顺序表进行插入操作,插入格式如(1,a){int j;if (L->length==L->listsize) { cout<<"\t\t\t顺序表已满"; return 0; }else{ if (i<1||i>L->length+1){ cout<<"\t\t\t位置不合法"; return 0; } else { for(j=L->length;j>=i;j–) { L->elem[j+1]=L->elem[j]; } L->elem[i]=x; L->length++; return 1; }}}int DeleteSeqList(SeqList* L,int i) //对顺序表进行删除操作{int j;if (i<1||i>L->length) { cout<<"\t\t\t不存在第i个元素"; return 0; }else { for (j=i;j<L->length;j++) { L->elem[j]=L->elem[j+1]; } L->length–; return 1; }}int LenSeqList(SeqList* L) //求顺序表表长{int n=0;int i=1;for (i=1;i<=L->length;i++) { n++; }return n;}int SearchSeqList(SeqList* L,DataType x) //按值查找{int j=1;while (j<=L->length && L->elem[j]!=x) j++;if(j>L->length){ cout<<"\t\t\t找不到你要的值,请重新输入"; return (0);}else return j;}DataType GetfromSeqList(SeqList* L,int i) //按位置查找{DataType x;if(i<1||i>L->length) { cout<<"\t\t\t查找位置不合法"; return 0; }else { x=L->elem[i]; return x; }}void ShowSeqList(SeqList* L) //显示顺序表{int i;cout<<"\n\t\t\t显示线性表的所有元素: ";if (L->length==0) { cout<<"\n\t\t\t链表为空"; }else { cout<<"\n\t\t\t"); for(i=1;i<=L->length;i++) { cout<<"\t",L->elem[i]; } }}
⑷ C语言顺序表简单问题
/*
A线性表为: 顺序表练习程序(C)
B线性表为: 该字符串将写入.txt文件
Press any key to continue
*/
#include<stdio.h>#include<stdlib.h>#include<string.h>typedefcharDataType;//定义数据数据类型typedefstruct{ DataType*data;//data指向数据区的首个数据 intlength;//数据长度}SqList;SqList*CreateList(DataType*s){ SqList*L; intlen=strlen(s); L=(SqList*)malloc(sizeof(SqList)); L->data=(DataType*)malloc(len+1); strcpy(L->data,s); L->length=len; returnL;}voidPrintList(SqList*L){ printf("%s
",L->data);}voidWriteFile(SqList*L,FILE*fw){ fprintf(fw,"%d%s
",L->length,L->data);}voidFreeList(SqList*L){ free(L->data); free(L);}intmain(){ DataType*arra="顺序表练习程序(C)"; DataType*arrb="该字符串将写入.txt文件"; FILE*fw=fopen("F:\VC\顺序表数据.txt","wt"); if(fw==NULL){ printf("不能打开数据文件<F:\VC\顺序表数据.txt>
"); return1; } SqList*A=CreateList(arra); printf("A线性表为:"); PrintList(A); SqList*B=CreateList(arrb); printf("B线性表为:"); PrintList(B); WriteFile(A,fw); WriteFile(B,fw); fclose(fw); FreeList(A); FreeList(B); return0;}
⑸ python顺序表
系统在开始使用之前先进行初始化功能,判断students.txt文件中是否保存的有学生的信息,如果有就把文件的内容读取出来,供接下来的操作使用,如用没有就初始化一个空的列表,用来保存用户的输入,程序中接下来的所有数据都会保存在该列表中相当与一个数据缓冲区。首先是打开文件操作,对文件中的内容进行读取操作,由于在文件中保存的内容是由空格进行分割的,并且每一个学生的信息都占用一行,首先读出所有的内容,先进行按照换行进行分割,得到每个人的信息,然后再对每个人的信息进行安装空格分隔,得到每个人的详细信息包括用户的姓名,学号,成绩。1. def Init(stulist): #初始化函数 2. print "初始化……" 3. file_object = open('students.txt', 'r') 4. for line in file_object: 5. stu = Student() 6. line = line.strip("\n") 7. s = line.split(" ") 8. stu.ID = s[0] 9. stu.name = s[1] 10. stu.score = s[2] 11. stulist.append(stu) 12. print "初始化成功!这部分代码是按照学生成绩的高低进行排序,在实现的时候,首先是把所有人的成绩放到一个列表里面然后使用插入排序,按照成绩的大小对StuList中保存的学生信息的地址进行排序def Sort(stulist): #按学生成绩排序 Stu = [] sum_count = [] for li in stulist: temp = [] temp.append(li.ID) temp.append(li.name) temp.append(int(li.score1)) temp.append(int(li.score2)) temp.append(int(li.score3)) temp.append(int(li.sum)) sum_count.append(int(li.sum)) Stu.append(temp) #print sum_count #print Stu; #print stulist insertSort(sum_count, stulist) #print stulist; display(stulist)def insertSort(a, stulist): for i in range(len(a)-1): #print a,i for j in range(i+1,len(a)): if a[i]<a[j]: temp = stulist[i] stulist[i] = stulist[j] stulist[j] = temp
⑹ 用C语言创建一个顺序表并完成插入等操作
/*
GY52122008
请输入插入字符 : –
请输入插入位置 : 7
GY5212-2008
Press any key to continue
*/
#include<malloc.h>#include<stdio.h>#include<string.h>#definemaxsize100typedefstruct{ char*data; intlength;}sqlist;voidinitlist(sqlist*&L){//初始化顺序表 L=(sqlist*)malloc(sizeof(sqlist)); L->data=(char*)malloc(maxsize); L->length=0;}voidcreatelist(sqlist*&L,chara[],intn){//建立顺序表 inti; for(i=0;i<n;i++)L->data[i]=a[i]; L->length=n;}boollistinsert(sqlist*&L,inti,chare){//插入数据元素 intj; if(i<1||i>L->length+1)returnfalse; i–; for(j=L->length;j>i;j–)L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; returntrue;}boollistdelete(sqlist*&L,inti,char&e){//删除数据元素 intj; if(i<1||i>L->length)returnfalse; i–; e=L->data[i]; for(j=1;j<L->length-1;j++)L->data[j]=L->data[j+1]; L->length–; returntrue;}intlistlength(sqlist*L){//求线性表长度 return(L->length);}voiddestroylist(sqlist*&L){ free(L);}intlocateelem(sqlist*L,chare){//按元素查找 inti=0; while(i<L->length&&L->data[i]!=e)i++; if(i>=L->length)return0; elsereturni+1;}voiddisplist(sqlist*L){//输出线性表 inti; for(i=0;i<L->length;i++)printf("%c",L->data[i]); printf("
");}intmain(){ intpos,len; charch,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); elseprintf("插入操作失败。
"); free(L->data); free(L); return0;}
⑺ 在VB中,顺序文件读操作用什么语句
使用顺序文件访问 推荐您使用 File System Objects 来创建文本文件,但该信息只在需要使用旧文本文件创建方法时才提供。当要处理只包含文本的文件时,比如由典型文本编辑器所创 建的文件-也就是说,其中的数据没有分成记录的文件,使用顺序型访问最好。顺序型访问不太适于存储很多数字,因为每个数字都要按字符串存储。一个四位数将需要 4 个字节的存储空间,而不是作为一个整数来存储时只需的 2 个字节。打开顺序访问文件当以顺序型访问打开一个文件时,可执行以下操作: 从文件输入字符 (Input)向文件输出字符 (Output)把字符加到文件 (Append) 要顺序型访问打开一个文件,Open 语句使用以下语法:Open pathname For [Input | Output | Append] As filenumber [Len = buffersize]当打开顺序文件作为 Input 时,该文件必须已经存在,否则,会产生一个错误。然而,当打开一个不存在的文件作为 Output 或 Append 时,Open 语句首先创建该文件,然后再打开它。当在文件与程序之间拷贝数据时,选项 Len 参数指定缓冲区的字符数。在打开一个文件 Input、Output 或 Append 以后,在为其它类型的操作重新打开它之前必须先使用 Close 语句关闭它。编辑为顺序访问打开的文件 如果要编辑一个文件,先把它的内容读入到程序变量,然后改变这些变量,最后再把这些变量写回到该文件。以下各节讨论如何编辑以顺序型访问打开的各记录。从文件中读取字符串 要检索文本文件的内容,应以顺序 Input 方式打开该文件。然后使用 Line Input#,Input( ),或者 Input# 语句将文件拷贝到程序变量中。Visual Basic 提供了一次读写顺序文件一个字符或一行的语句和功能。例如,以下代码段逐行读取一个文件:Dim LinesFromFile, NextLine As StringDo Until EOF(FileNum) Line Input #FileNum, NextLine LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10)Loop尽管 Line Input # 到达回车换行时它会识别行尾,但是,当它把该行读入变量时,不包括回车换行。如果要保留该回车换行,代码必须添加。也可以使用 Input # 语句,它读取文件中所写的一列的数字和/或字符串表达式。例如,要从一个邮件列表文件中读取一行,可使用以下语句:Input #FileNum, name, street, city, state, zip可以使用 Input 函数来从文件向变量拷贝任意数量的字符,所给的变量大小应足够大。例如,以下的代码使用 Input 把指定数目的字符复制到变量。LinesFromFile = Input(n, FileNum)要将整个文件复制到变量,请使用 InputB 函数将字节从文件复制到变量。因为InputB 函数返回一个 ANSI 字符串,您必须使用 StrConv 函数将 ANSI 字符串转换为一个如下的 UNICODE 字符串:LinesFromFile = StrConv(InputB(LOF(FileNum), FileNum), vbUnicode)把字符串写入文件 要在顺序文件中存储变量的内容,应以顺序 Output 或 Append 打开它,然后使用 Print # 语句。例如,文本编辑器可以使用以下代码行来把一个文本框的内容拷贝到文件。Print #FileNum, TheBox.TextVisual Basic 也支持 Write # 语句,它把一列数字和/或字符串表达式写入文件。它自动地用逗号分开每个表达式,并且在字符串表达式端放置引号。Dim AnyString As String, AnyNumber As IntegerAnyString = "AnyCharacters"AnyNumber = 23445Write #FileNum AnyString, AnyNumber这个代码段把两个表达式写入由 FileNum 指定的文件。第一个表达式包含一个字符串而第二个包含数字 23445。因而,Visual Basic 把以下的字符(包括所有标点符号)写入到文件中:"AnyCharacters",23445注意 如果正在用顺序型访问的 Write # 与 Input # 语句,可考虑换用随机型 或二进制型访问,因为它们更适合面向于记录的数据。详细信息 有关顺序文件访问的其它信息,请参阅“Open 语句”。