真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

順序表c語言輸入函數(shù) c語言輸出順序表

順序表和鏈表的基本操作,用C語言實(shí)現(xiàn)!

順序存儲的線性表的算法

桐廬網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

#include "stdio.h"

#include "stdlib.h"

#define Status int

#define OVERFLOW 0

#define TRUE 1

#define FALSE 0

#define OK 1

#define MAXSIZE 100

typedef int ElemType;

typedef struct list

{ElemType elem[MAXSIZE];

int length;

}SqList;

void InitList(SqList L){

L.length=0;

}

/*建立順序表*/

void CreateList(SqList L)

{

int i;

printf("input the length");

scanf("%d",L.length);//輸入表長

for(i=1;i=L.length;i++)

scanf("%d",L.elem[i-1]);//輸入元素

}

//順序表的遍歷

void printdata(ElemType e){

printf("%4d",e);

}

void Traverse(SqList L,void (*visit)(ElemType e))

{ int i;

printf("The elements of the lists are:\n");

for(i=1;i=L.length;i++){

if (i%10==0)printf("\n");//每行顯示10個元素

visit(L.elem[i-1]);//輸出表中元素

}

printf("\n");

}

//有序順序表L中插入元素e使序列仍有序

void Insert(SqList L,ElemType e)

{int i,j;

if (L.length==MAXSIZE)exit(OVERFLOW);//表滿,不能插入

for(i=1;i=L.lengthL.elem[i-1]=e;i++);//向后查找

for(j=L.length;j=i;j--)

L.elem[j]=L.elem[j-1];//元素后移

L.elem[i-1]=e;//插入e

L.length=L.length+1;//表長加1

}

//建立遞增有序的順序表

void CreateList_Sorted(SqList L)

{int i,num;

ElemType e;

L.length=0;

printf("Create a sorted list,Input the length of the list\n");

scanf("%d",num);

printf("Input the data %d numbers\n",num);

for(i=1;i=num;i++){

scanf("%d",e);

Insert(L,e);

}

}

/*Merge two sorted lists*/

void MergeList(SqList La,SqList Lb,SqList Lc)

{int *pa,*pb,*pc;

if (La.length+Lb.lengthMAXSIZE) exit(OVERFLOW);

else

{pa=La.elem;pb=Lb.elem;pc=Lc.elem;

while (paLa.elem+La.lengthpbLb.elem+Lb.length)

*pc++=(*pa=*pb)?*pa++:*pb++;/*公共部分合并*/

while (paLa.elem+La.length) *pc++=*pa++;

/*R1表的剩余部分放到R的后部*/

while (pbLb.elem+Lb.length) *pc++=*pb++;

/*R2表的剩余部分放到R的后部*/

Lc.length=La.length+Lb.length;/*R表長*/

}

}

//判斷元素是否對稱,對稱返回TRUE 否則返回FALSE

Status Symmetric(SqList L)

{int low,high;

low=0;

high=L.length-1;

while(lowhigh)

if (L.elem[low]==L.elem[high]){low++;high--;}

else return(FALSE); return(TRUE); }

//順序表的主函數(shù)部分

//#include "seqlist.h"

void main()

{SqList L1,L2,L;

int select;

ElemType e;

do{printf("\n1 insert 2 merge");

printf("\n3 symmetric 0 exit \n");

printf("Please select(0--3)\n");

scanf("%d",select);

switch(select){

case 1:

InitList(L);

CreateList_Sorted(L);

Traverse(L,printdata);

printf("\nInput the element of inserted\n");

scanf("%d",e);

Insert(L,e);

Traverse(L,printdata);

break;

case 2:

InitList(L1);

CreateList_Sorted(L1);

Traverse(L1,printdata);

InitList(L2);

CreateList_Sorted(L2);

Traverse(L2,printdata);

InitList(L);

MergeList(L1,L2,L);

Traverse(L,printdata);

break;

case 3:

InitList(L);

CreateList(L);

Traverse(L,printdata);

if (Symmetric(L)) printf("Yes!\n"); else printf("Not\n");

break;

case 0:break;

default:printf("Error! Try again!\n");

}

}while(select);

}

/*單向鏈表的有關(guān)操作示例*/

/*類型定義及頭文件部分,文件名為sllink.h*/

#include stdio.h

#include stdlib.h

typedef int ElemType;//元素實(shí)際類型

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList; //定義結(jié)點(diǎn)、指針類型名

//頭插法建立無序鏈表

void CreateList(LinkList L){

LinkList p;

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L-next=NULL;

printf("頭插法建立鏈表,以0結(jié)束\n");

scanf("%d",e);

while(e){

p=(LinkList)malloc(sizeof(LNode));

p-data=e;

p-next=L-next;

L-next=p;

scanf("%d",e);

}

}

/*非遞減有序單向鏈表L插入元素e序列仍有序*/

void Insert_Sort(LinkList L,ElemType e){

LinkList p,s;

s=(LinkList)malloc(sizeof(LNode));

s-data=e;

p=L;

while(p-nextp-next-data=e)

p=p-next;/*查找插入位置*/

s-next=p-next; /*插入語句*p結(jié)點(diǎn)后插入*s結(jié)點(diǎn)*/

p-next=s;

}

/*建立遞增有序的單向鏈表*/

void Create_Sort(LinkList L){

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L-next=NULL;

printf("建立有序表,輸入任意個整型數(shù)據(jù)以0結(jié)束\n");

scanf("%d",e);

while(e){

Insert_Sort(L,e);

scanf("%d",e);

}

}

/*單向鏈表的遍歷*/

void Traverse(LinkList L){

LinkList p;

printf("遍歷鏈表");

for(p=L-next;p;p=p-next)

printf("%5d",p-data);

printf("\n");

}

/*在單向鏈表刪除元素e*/

void Delete(LinkList L,ElemType e){

LinkList p,q;

p=L;

q=L-next;

while(q q-data!=e){//查找元素的刪除位置

p=q;

q=q-next;

}

if(!q) printf("\nnot deleted");/*未找到元素e*/

else {p-next=q-next;/*找到刪除*/

free(q);}

}

/*單向鏈表的逆置*/

void exch(LinkList L){

LinkList p,s;

p=L-next;

L-next=NULL;

while(p){

s=p;

p=p-next;

s-next=L-next;

L-next=s;

}

}

/*兩個非遞減有序單向鏈表合并后仍為非遞減序列*/

void MergeIncrease(LinkList La,LinkList Lb,LinkList Lc){

LinkList p,q,s,rear;

p=La-next;

q=Lb-next;

Lc=rear=La;

free(Lb);

while(pq){

if (p-dataq-data) {s=p;p=p-next; }

else {s=q;q=q-next; }

rear-next=s;/*較小元素插入表尾*/

rear=rear-next;

}

if (p) rear-next=p; else rear-next=q;

}

/*主函數(shù)部分,文件名為sllink.c*/

//#include "sllink.h"

void main(){

LinkList La,Lb,Lc;

ElemType e;

int select;

do{

printf(" 1 建立無序表,再刪除指定元素\n");

printf(" 2 建立遞增有序表,再逆置\n");

printf(" 3 建立兩個遞增有序表,將它們和并為一個仍遞增表\n");

printf(" 0 退出,請輸入選項(xiàng)(0-3)\n");

scanf("%d",select);

switch(select){

case 0:

break;

case 1:

CreateList(La);

Traverse(La);

printf("輸入需刪除的元素\n");

scanf("%d",e);

Delete(La,e);

Traverse(La);

break;

case 2:

Create_Sort(La);

Traverse(La);

exch(La);

printf("The list that is exchaged\n");

Traverse(La);

break;

case 3:

Create_Sort(La);Traverse(La);

Create_Sort(Lb);Traverse(Lb);

MergeIncrease(La,Lb,Lc);Traverse(Lc);

break;

default:

printf("輸入選項(xiàng)錯誤,請重新輸入!\n");

}

}while(select);

}

這些內(nèi)容不知道能不能幫助到你。

用C語言建立一個順序表,輸入n個數(shù)并輸出。程序編譯沒錯,但運(yùn)行不了,求指教。程序如下:

樓主你好

修改如下:

#includestdio.h

#includemalloc.h

#define MaxSize 40 //順序表存儲空間的初始分配量 -- (1)可以將MaxSize調(diào)大點(diǎn)兒

typedef struct

{

int *p;

int data[MaxSize];

int length;

int listsize;

}SeqList;

void InitList(SeqList x) //定義順序表的初始化函數(shù)

//-- (2)這里應(yīng)該是SeqList x 需要址傳遞 值傳遞是不會改變實(shí)參值的

{

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("數(shù)據(jù)錯誤!\n");

return 0;

}

if(nMaxSize)

{

L.p=(int*)realloc(L.p,n*sizeof(int));

if(!L.p)printf("存儲空間擴(kuò)展失?。n");

L.listsize=n;

}

printf("請輸入數(shù)據(jù):");

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語言實(shí)現(xiàn)順序表的輸入輸出,哪位大神幫忙檢查下,輸出不對

#include?stdio.h

#include?stdlib.h

#define?TRUE?1

#define?FALSE?0

#define?OK?1

#define?ERROR?0

#define?INFEASIBLE?-1

#define?OVERFLOW?-2

#define?LIST_INIT_SIZE?100

#define?LISTINCREMENT??10

typedef?int?Status;

typedef?int?ElemType;

typedef?struct?{

ElemType?*elem;

size_t?length;

size_t?maxsize;

// int?data;

}SqList;

//對表初始化?

SqList?*InitList()?{

SqList?*L?=?(SqList?*)malloc(sizeof(SqList));

L-elem?=?(ElemType?*)malloc(LIST_INIT_SIZE?*?sizeof(ElemType));

if(!?L-elem)??exit(OVERFLOW);?????//分配空間失敗

L-length?=?0;?????????????????????//空表長度為0

L-maxsize?=?LIST_INIT_SIZE;??????//初始存儲容量

return?L;

}//InitList_Sq

//建立新表?

void?Buid(SqList?*L)?{

ElemType?*newbase,data;

printf("輸入元素:");

scanf("%d",data);

if(L-length?=?L-maxsize)?{?//存儲空間已滿,增加分配

newbase?=?(ElemType?*)realloc(L-elem,(L-maxsize+LISTINCREMENT)*sizeof(ElemType));

if(!newbase)?exit(OVERFLOW);//存儲分配失敗

free(L-elem);

L-elem?=?newbase;???????//新基址

L-maxsize?+=?LISTINCREMENT;?//增加存儲容量

}

L-elem[L-length]?=?data;

++L-length;

}

//輸出表

void??output(SqList?*L)?{

size_t?i;

for(i?=?0;?i??L-length;?i++)

printf("%d?",L-elem[i]);

printf("\n");

}

//主函數(shù)?

int?main()?{

SqList?*L?=?InitList();

Buid(L);

output(L);

return?0;

}

c語言順序表的輸入函數(shù)

建立方法很多,線性表是順序表的順序存儲結(jié)構(gòu),這里我給你寫個簡單的例子參考一下,只要理解了,怎么寫都不會錯:具體代碼如下: #include typedef struct{ int data[100]; int length; }Seqlist;//定義Seq這個新的數(shù)據(jù)類型 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("請輸入要創(chuàng)建的元素的個數(shù):\t"); scanf("%d",a); for(int i=0;i

怎樣用c語言實(shí)現(xiàn)用順序表完成輸入一串字符,在插入,計(jì)算長度,刪除計(jì)算長度,最后輸出,拜托拜托=v=

#include?stdio.h

#include?string.h

#include?stdlib.h

#define?maxsize?100

typedef?char?elepmtype;

typedef?struct?sequlist

{

elepmtype?data[maxsize];

int?num;

//int?length;???//和num的功能不是一樣的么

}SeqList,*LinkList;

void?ListInitiate(LinkList?*L)??//利用二級指針,初始化順序表,你這里是想模仿我的那個二級指針方法嗎?

{?

(*L)=(LinkList)malloc(sizeof(SeqList));

(*L)-num=0;???????????????????//初始化為0

}?

void?InputSeqList(SeqList?*L)???//跟人家借一個輸入函數(shù)

{

char?str[maxsize];?????

printf("輸入字符串:");

gets(str);?????????

for(int?i=0;str[i]!='\0';i++){???//這個地方用'\0'字符就好了,因?yàn)樽址麛?shù)組或者字符串的結(jié)束符都是\0

L-data[i]=str[i];

L-num++;

}

}

int?InsertList(?SeqList?*L,int?i,elepmtype?x)/*i取值從0到maxsize-1*/

{?

int?j;

if(i0||iL-num+1)

{?printf("error\n");return(0);}/*檢查插入位置的合理性*/

if((L-num==maxsize-1))/*表滿則不能插入*/?

{printf("插入位置錯\n");return(0);}

for(j=L-num;j=i;j--)/*結(jié)點(diǎn)后移,為插入騰出空間*/

L-data[j+1]=L-data[j];?????????????//這里應(yīng)該是L-data??不是?List,而且向后移動數(shù)據(jù)的話

L-data[i]=x;???????//新元素插入

L-num++;??????/*調(diào)整last指向最后元素*/

return(1);/*成功返回1*/

}

//刪除函數(shù)

int?ListDelete(SeqList?*L,int?i,??elepmtype?*x)???//這是不是分號?是逗號

{?

int?j;

if(L-num0)

{

printf("\n?the?list?is?empty!");

return?0;??????????

}

else?if?(i0||iL-num)??????//掉了一個

{?

printf("\n?the?position?is?invialid");

return?0;

}

else?

{

*x=L-data[i];????????????????//這里記錄了x的值

for?(j=i+1;j=L-num;j++){

L-data[j-1]=L-data[j];?????????//改成這樣看著比較舒服

}

L-num--;

}

return?1;

}

int?ListLength(SeqList?*L)?????//這里怎么多了一個分號

{

return?L-num;

//int?i;

//i=0;

//for(i=0;i=n;i++)

//return(i);????//return只會執(zhí)行一次。

}

void?OutputSeqList(SeqList?*L)?

{

if(0==L-num)????//你定義的是num啊,怎么又寫成了last,代碼亂入啊

return;

for(int?i?=?0;i?L-num;i++){

printf("%c",L-data[i]);?

}

printf("\n");?

printf("字符串有%d個字符\n",ListLength(L));?//你的函數(shù)的名字是ListLength,不是length

}

int?main()

{

SeqList?*sq;

ListInitiate(sq);??//將sq指針的地址傳給了SeqList?**?L,進(jìn)行初始化,充當(dāng)了一個全局變量的作用

//InitList(sq);

InputSeqList(sq);

OutputSeqList(sq);

//InsertSeqList(sq,1,'a');

InsertList(sq,1,'a');

OutputSeqList(sq);

//DelSeqList(sq,2);

char?c;

ListDelete(sq,2,c);

OutputSeqList(sq);

printf("%c成功被刪除\n",c);

system("PAUSE");

return?0;

}不懂的直接加Q,Q已給你私信


分享文章:順序表c語言輸入函數(shù) c語言輸出順序表
網(wǎng)站路徑:http://weahome.cn/article/hhieje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部