成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

線性表基礎(chǔ)運算函數(shù)c語言 線性表基礎(chǔ)運算函數(shù)c語言表示

線性表的操作(C語言)

//---------------------------------------------------------------------------

成都創(chuàng)新互聯(lián)公司主營河西網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,河西h5重慶小程序開發(fā)公司搭建,河西網(wǎng)站營銷推廣歡迎河西等地區(qū)企業(yè)咨詢

#include stdio.h

#include stdlib.h

#include time.h

#define STY "%d"/*元素類型格式符*/

typedef int eltp;/*元素類型*/

typedef struct node{

eltp data;

struct node *next;

} node;

void init(void)

{

static int fg=1;

if (fg) {

srand(time(NULL));

fg=0;

}

}

node *insert(node *h,eltp d)

{

node *s=(node *)malloc(sizeof(node));

if (!h) {

s-data=d;

s-next=NULL;

h=s;

}

else {

h-next=insert(h-next,d);

}

return h;

}

node *create(int n)

{

node *h=NULL;

int i;

for (i = 0; in; i++) {

h=insert(h,rand()%100);

}

if (h) {

printf("線性表生成已完成!\n");

}

else {

fprintf(stderr,"線性表生成未成功\n");

exit(-1);

}

return h;

}

node *del(node *h,eltp d)

{

node *p;

if (hh-data==d) {

p=h;

h=h-next;

free(p);

}

else if (h) h-next=del(h-next,d);

return h;

}

int search(node *h,eltp d)

{

int i=1;

while (hh-data!=d)

{

h=h-next;

i++;

}

if (!h) i=-1;

return i;

}

int count(node *h)

{

int i=0;

for (i = 0; h; i++) {

h=h-next;

}

return i;

}

void prt(node *h)

{

while (h)

{

printf(STY"\t",h-data);

h=h-next;

}

putchar('\n');

}

void Free(node **h)

{

if (*h) {

Free((*h)-next);

free(*h);

*h=NULL;

}

}

int menu(void)

{

int i;

puts("******************");

puts("1.生成線性表");

puts("2.輸出表元素");

puts("3.刪除表元素");

puts("4.查找表元素");

puts("5.統(tǒng)計表元素");

puts("6.插入表元素");

puts("7.刪除線性表");

puts("0.退出本程序");

puts("******************");

printf("請選擇:");

scanf("%d",i);

return i;

}

void find(node *h)

{

eltp a;

//node *t=NULL;

int index;

printf("請輸入要查找的數(shù)字:");

scanf(STY,a);

index=search(h,a);

if (index!=-1) {

printf(STY"是表中的第%d個元素\n",a,index);

}

else printf(STY"不是表中的元素\n",a);

}

node *insert_node(node *h,int index,eltp a)

{

node *hd=h,*in=(node *)malloc(sizeof(node));

int i;

in-data=a;

if (index1) {

for (i=1; h-nextiindex-1; i++) {

h=h-next;

}

in-next=h-next;

h-next=in;

}

else {

in-next=hd;

hd=in;

}

return hd;

}

node *remove_node(node *h)

{

eltp a;

printf("請輸入要刪除的元素:");

scanf(STY,a);

h=del(h,a);

puts("已完成");

return h;

}

node *ins(node *h)

{

eltp a;

int i;

printf("請輸入要插入的元素:");

scanf(STY,a);

printf("請輸入要插入的位置:");

scanf("%d",i);

return insert_node(h,i,a);

}

int main(void)

{

node *head=NULL;

int ch;

init();

do

{

ch=menu();

switch (ch) {

default:printf("輸入有誤,重新輸入\n");break;

case 0:break;

case 1:if(head) Free(head);

head=create(10);

break;

case 2:prt(head);break;

case 3:head=remove_node(head);break;

case 4:find(head);break;

case 5:printf("表中共有%d個元素\n",count(head));break;

case 6:head=ins(head);break;

case 7:Free(head);break;

}

}while (ch);

Free(head);

return 0;

}

//---------------------------------------------------------------------------

求線性表的C語言程序

第一個文件commom.h

#include stdio.h

#include stdlib.h

#include malloc.h

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

第二個文件seqlist.h

#define ElemType int

#define MAXSIZE 100 /*此處的宏定義常量表示線性表可能達到的最大長度*/

typedef struct

{

ElemType elem[MAXSIZE]; /*線性表占用的數(shù)組空間*/

int last; /*記錄線性表中最后一個元素在數(shù)組elem[ ]中的位置(下標值),空表置為-1*/

}SeqList;

第三個文件locate.cpp

#include "common.h"

#include "seqlist.h"

int Locate(SeqList L, ElemType e)

{

int i=0; /*i為掃描計數(shù)器,初值為0,即從第一個元素開始比較*/

while ((i=L.last)(L.elem[i]!=e)) /*順序掃描表,直到找到值為key的元素, 或掃描到表尾而沒找到*/

i++;

if (i=L.last)

return(i+1); /*若找到值為e的元素,則返回其序號*/

else

return(-1); /*若沒找到,則返回空序號*/

}

void main()

{

SeqList l;

int p,q,r;

int i;

printf("請輸入線性表的長度:");

scanf("%d",r);

l.last = r-1;

printf("請輸入線性表的各元素值:\n");

for(i=0; i=l.last; i++)

{

scanf("%d",l.elem[i]);

}

printf("請輸入要查找的元素值:\n");

scanf("%d",q);

p=Locate(l,q);

if(p == -1)

printf("在此線性表中沒有該元素!\n");

else

printf("該元素在線性表中的位置為:%d\n",p);

}

第四個文件InsList.cpp

#include "common.h"

#include "seqlist.h"

/*在順序表L中第i個數(shù)據(jù)元素之前插入一個元素e。 插入前表長n=L-last+1,

i的合法取值范圍是 1≤i≤L-last+2 */

int InsList(SeqList *L,int i,ElemType e)

{

int k;

if((i1) || (iL-last+2)) /*首先判斷插入位置是否合法*/

{

printf("插入位置i值不合法");

return(ERROR);

}

if(L-last= MAXSIZE-1)

{

printf("表已滿無法插入");

return(ERROR);

}

for(k=L-last;k=i-1;k--) /*為插入元素而移動位置*/

L-elem[k+1]=L-elem[k];

L-elem[i-1]=e; /*在C語言數(shù)組中,第i個元素的下標為i-1*/

L-last++;

return(OK);

}

void main()

{

SeqList *l;

int p,q,r;

int i;

l=(SeqList*)malloc(sizeof(SeqList));

printf("請輸入線性表的長度:");

scanf("%d",r);

l-last = r-1;

printf("請輸入線性表的各元素值:\n");

for(i=0; i=l-last; i++)

{

scanf("%d",l-elem[i]);

}

printf("請輸入要插入的位置:\n");

scanf("%d",p);

printf("請輸入要插入的元素值:\n");

scanf("%d",q);

InsList(l,p,q);

for(i=0; i=l-last; i++)

{

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

}

}

第五個文件DelList.cpp

#include "common.h"

#include "seqlist.h"

int DelList(SeqList *L,int i,ElemType *e)

/*在順序表L中刪除第i個數(shù)據(jù)元素,并用指針參數(shù)e返回其值。i的合法取值為1≤i≤L.last+1 */

{

int k;

if((i1)||(iL-last+1))

{

printf("刪除位置不合法!");

return(ERROR);

}

*e = L-elem[i-1]; /* 將刪除的元素存放到e所指向的變量中*/

for(k=i; i=L-last; k++)

L-elem[k-1] = L-elem[k]; /*將后面的元素依次前移*/

L-last--;

return(OK);

}

void main()

{

SeqList *l;

int p,r;

int *q;

int i;

l = (SeqList*)malloc(sizeof(SeqList));

q = (int*)malloc(sizeof(int));

printf("請輸入線性表的長度:");

scanf("%d",r);

l-last = r-1;

printf("請輸入線性表的各元素值:\n");

for(i=0; i=l-last; i++)

{

scanf("%d",l-elem[i]);

}

printf("請輸入要刪除的元素位置:\n");

scanf("%d",p);

DelList(l,p,q);

printf("刪除的元素值為:%d\n",*q);

}

第六個文件merge.cpp

#include "common.h"

#include "seqlist.h"

void merge(SeqList *LA, SeqList *LB, SeqList *LC)

{

int i,j,k;

i=0;j=0;k=0;

while(i=LA-lastj=LB-last)

if(LA-elem[i]=LB-elem[j])

{

LC-elem[k]= LA-elem[i];

i++;

k++;

}

else

{

LC-elem[k]=LB-elem[j];

j++;

k++;

}

while(i=LA-last) /*當表LA有剩余元素時,則將表LA余下的元素賦給表LC*/

{

LC-elem[k]= LA-elem[i];

i++;

k++;

}

while(j=LB-last) /*當表LB有剩余元素時,則將表LB余下的元素賦給表LC*/

{

LC-elem[k]= LB-elem[j];

j++;

k++;

}

LC-last=LA-last+LB-last+1;

}

void main()

{

SeqList *la,*lb,*lc;

int r;

int i;

la=(SeqList*)malloc(sizeof(SeqList));

printf("請輸入線性表A的長度:");

scanf("%d",r);

la-last = r-1;

printf("請輸入線性表A的各元素值:\n");

for(i=0; i=la-last; i++)

{

scanf("%d",la-elem[i]);

}

lb=(SeqList*)malloc(sizeof(SeqList));

printf("請輸入線性表B的長度:");

scanf("%d",r);

lb-last = r-1;

printf("請輸入線性表B的各元素值:\n");

for(i=0; i=lb-last; i++)

{

scanf("%d",lb-elem[i]);

}

lc=(SeqList*)malloc(sizeof(SeqList));

merge(la,lb,lc);

printf("合并后線性表C中的元素為:\n");

for(i=0; i=lc-last; i++)

{

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

}

}

包含了線性表插入,查找,刪除,合并運算。

C語言 線性表的實現(xiàn)

typedef int datatype;

#define maxsize 1024

typedef struct

{ ElemType data[MaxSize];

int length;

}SqList;

void InitList(SqList L)

{ L.length=0;

}

int GetLength(SqList L)

{return L.length;

}

int GetElem(SqList L,int i,ElemType e)

{ if (i1||iL.length)

return 0;

else

{ e=L.data[i-1];

return 1;

}

}

int Locate(SqList L,ElemType x)

{int i=0;

while (L.data[i]!=x)

i++;

if (iL.length)

return (0);

else

return(i+1);

}

int InsElem(SqList L,ElemType x,int i)

{ int j;

if(i1||iL.length+1)

return 0;

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

L.data[j]=L.data[j-1];

L.data[i-1]=x;

L.length++;

return 1;

}

int DelElem(SqList L,int i)

{ int j;

if(i1||iL.length)

return 0;

for(j=i;jL.length;j++)

L.data[j-1]=L.data[j];

L.length--;

return 1;

}void DispList(SqList L)

{ int i;

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

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

printf("\n");

}

void main()

{ int i;

ElemType e;

SqList L;

InitList(L);

InsElem(L,'a',1);

InsElem(L,'c',2);

InsElem(L,'a',3);

InsElem(L,'e',4);

InsElem(L,'d',5);

InsElem(L,'b',6);

printf("xian xing biao:");DispList(L);

printf("chang du:%d\n",GetLength(L));

i=3;GetElem(L,i,e);

printf("di %d ge yuan su :%c\n",i,e);

e='a';

printf("yuan su %c shi di %d ge yuan su\n",e,Locate(L,e));

i=4;printf("shan chu di %d ge yuan su\n",i);

DelElem(L,i);

printf("xian xing biao:");DispList(L);

}

網(wǎng)頁名稱:線性表基礎(chǔ)運算函數(shù)c語言 線性表基礎(chǔ)運算函數(shù)c語言表示
網(wǎng)站URL:http://jinyejixie.com/article12/dosgpdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、軟件開發(fā)、網(wǎng)站設(shè)計、商城網(wǎng)站、網(wǎng)站內(nèi)鏈網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
舟山市| 临高县| 湘乡市| 望城县| 北京市| 平果县| 台南市| 齐河县| 洞口县| 龙川县| 株洲市| 常熟市| 陵川县| 清水县| 永平县| 深圳市| 霍邱县| 黎川县| 泰顺县| 喀喇| 布拖县| 贺州市| 黑河市| 平乡县| 高雄市| 郧西县| 康定县| 江山市| 汤原县| 绿春县| 门源| 遂昌县| 获嘉县| 洪雅县| 夏河县| 大洼县| 凌海市| 喀喇沁旗| 洪江市| 濮阳县| 伊川县|