第一個(gè)文件commom.h
10多年的阿圖什網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整阿圖什建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“阿圖什網(wǎng)站設(shè)計(jì)”,“阿圖什網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
#include stdio.h
#include stdlib.h
#include malloc.h
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
第二個(gè)文件seqlist.h
#define ElemType int
#define MAXSIZE 100 /*此處的宏定義常量表示線性表可能達(dá)到的最大長度*/
typedef struct
{
ElemType elem[MAXSIZE]; /*線性表占用的數(shù)組空間*/
int last; /*記錄線性表中最后一個(gè)元素在數(shù)組elem[ ]中的位置(下標(biāo)值),空表置為-1*/
}SeqList;
第三個(gè)文件locate.cpp
#include "common.h"
#include "seqlist.h"
int Locate(SeqList L, ElemType e)
{
int i=0; /*i為掃描計(jì)數(shù)器,初值為0,即從第一個(gè)元素開始比較*/
while ((i=L.last)(L.elem[i]!=e)) /*順序掃描表,直到找到值為key的元素, 或掃描到表尾而沒找到*/
i++;
if (i=L.last)
return(i+1); /*若找到值為e的元素,則返回其序號(hào)*/
else
return(-1); /*若沒找到,則返回空序號(hào)*/
}
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);
}
第四個(gè)文件InsList.cpp
#include "common.h"
#include "seqlist.h"
/*在順序表L中第i個(gè)數(shù)據(jù)元素之前插入一個(gè)元素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--) /*為插入元素而移動(dòng)位置*/
L-elem[k+1]=L-elem[k];
L-elem[i-1]=e; /*在C語言數(shù)組中,第i個(gè)元素的下標(biāo)為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]);
}
}
第五個(gè)文件DelList.cpp
#include "common.h"
#include "seqlist.h"
int DelList(SeqList *L,int i,ElemType *e)
/*在順序表L中刪除第i個(gè)數(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("請輸入要?jiǎng)h除的元素位置:\n");
scanf("%d",p);
DelList(l,p,q);
printf("刪除的元素值為:%d\n",*q);
}
第六個(gè)文件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) /*當(dāng)表LA有剩余元素時(shí),則將表LA余下的元素賦給表LC*/
{
LC-elem[k]= LA-elem[i];
i++;
k++;
}
while(j=LB-last) /*當(dāng)表LB有剩余元素時(shí),則將表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]);
}
}
包含了線性表插入,查找,刪除,合并運(yùn)算。
#define MAXSIZE 100 //表中元素的最大個(gè)數(shù)
typedef int ElemType;//元素類型
typedef struct list{
ElemType elem[MAXSIZE];//靜態(tài)線性表
int length; //表的實(shí)際長度
}SqList;//順序表的類型名
#include"stdio.h"
#includemalloc.h
typedef char ElemType;
typedef struct LNode
{ElemType data;
struct LNode *next;
}LinkList;
void CreatListF(LinkList *L,ElemType a[],int n) //頭插法建表
{
LinkList *s;int i;
L=(LinkList *)malloc(sizeof(LinkList));
L-next=NULL;
for(i=0;in;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=a[i];
s-next=L-next;
L-next=s;
}
}
void CreateListR(LinkList *L,ElemType a[],int n) //尾插法建表
{
LinkList *s,*r;int i;
L=(LinkList *)malloc(sizeof(LinkList));
r=L;
for(i=0;in;i++)
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=a[i];
r-next=s;
r=s;
}
r-next=NULL;
}
void InitList(LinkList *L) //初始化線性表
{
L=(LinkList *)malloc(sizeof(LinkList));
L-next=NULL;
}
void DestroyList(LinkList *L) //銷毀線性表
{
LinkList *p=L,*q=p-next;
while(q!=NULL)
{
free(p);
p=q;
q=p-next;
}
free(p);
}
int ListEmpty(LinkList *L) //判斷線性表是否為空
{
return(L-next==NULL);
}
int ListLength(LinkList *L) //求線性表的長度
{
LinkList *p=L;int n=0;
while(p-next!=NULL)
{
n++;p=p-next;
}
return(n);
}
void DispList(LinkList *L) //輸出線性表
{
LinkList *p=L-next;
while(p!=NULL)
{
printf("%c",p-data);
p=p-next;
}
}
int GetElem(LinkList *L,int i,ElemType e) //求線性表中某個(gè)數(shù)據(jù)元素值
{
int j=0;
LinkList *p=L;
while(jip!=NULL)
{
j++;p=p-next;
}
if(p==NULL)
return 0;
else
{
e=p-data;return 1;
}
}
int LocateElem(LinkList *L,ElemType e) //按元素值查找
{
LinkList *p=L-next;
int i=1;
while(p!=NULLp-data!=e)
{
p=p-next;i++;
}
if(p==NULL)return(0);
else return(i);
}
int ListInsert(LinkList *L,int i,ElemType e) //插入數(shù)據(jù)元素
{
int j=0;
LinkList *p=L,*s;
while(ji-1p!=NULL)
{
j++;p=p-next;
}
if(p==NULL)return 0;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s-data=e; s-next=p-next; p-next=s;
return 1;
}
}
int ListDelete(LinkList *L,int i,ElemType e) //刪除數(shù)據(jù)元素
{
int j=0;
LinkList *p=L,*q;
while(ji-1p!=NULL)
{
j++;p=p-next;
}
if(p==NULL)
return 0;
else
{
q=p-next;
if(q==NULL)return 0;
e=q-data;
p-next=q-next;
free(q);
return 1;
}
}
int main()
{
ElemType e,a[5]={'a','b','c','d','e'};
LinkList *h;
InitList(h); //初始化順序表h
CreateListR(h,a[0],5); //依次采用尾插入法插入a,b,c,d,e元素
printf("單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
printf("該單鏈表的長度為:");
printf("%d",ListLength(h)); printf("\n"); //輸出順序表h的長度
if(ListEmpty(h)) printf("該單鏈表為空。\n");
else printf("該單鏈表不為空。\n"); //判斷順序表h是否為空
GetElem(h,3,e);printf("該單鏈表的第3個(gè)元素為:");
printf("%c",e); printf("\n"); //輸出順序表h的第3個(gè)元素
printf("該單鏈表中a的位置為:");
printf("%d",LocateElem(h,'a')); printf("\n"); //輸出元素'a'的位置
ListInsert(h,4,'f'); //在第4個(gè)元素位置插入'f'素
printf("在第4 個(gè)元素位置上插入'f'后單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
ListDelete(h,3,e); //刪除L的第3個(gè)元素
printf("刪除第3個(gè)元素后單鏈表為:");
DispList(h); printf("\n"); //輸出順序表h
DestroyList(h); //釋放順序表h
return 0;
}