當前位置:首頁 » 編程軟體 » 編程線性表

編程線性表

發布時間: 2023-04-25 17:33:45

『壹』 一個線性表的編程

//花了一個晚上和這個中午的時間,終於做好了,可以再VC 6.0里正確運行,基本可以到達你的要求,代碼:#include<iostream.h>
typedef int datatype; //線性表結點的數據類型,假設是 int
const int maxsize=100; //線性表可能的最大長度,這里假設是 100;
typedef struct{
datatype data[maxsize+1]; // 定義線性表的數據
int n; //線性表的長度
}sqlist;//建表
sqlist* creat()
{
datatype x;
int i=1;
sqlist *L;
L=new sqlist;
while(cin>>x,x!=0)
{
L->data[i]=x;
i++;
}
L->n=i-1;
L->data[0]=L->n;
return L;
}//插入函數
int insert(sqlist *L,datatype x,int i) { //將 x 插入到順序表 L得到第 i 個位置
int j;
if(L->n==maxsize) { cout<<"表滿,不能插入!(上溢)\n"; return -1; }
if(i<1 || i>L->n+1) {cout<<"非法插入位置!\n"; return 0; }
L->n++;
for(j=L->n;j>i;j--)
L->data[j]=L->data[j-1]; //結點後移
L->data[i]=x;
return 1;
}//刪除函數
int deletex(sqlist *L,datatype x) {
if(L->n==0) { cout<<"表空,不能刪除!(下溢)\n"; return 0;}
for(int j=1;j<=L->n;j++)
if(L->data[j]==x) //查找衫毀 匹配值 x
for(;j<=L->n;j++)
L->data[j]=L->data[j+1]; //結點前移
L->n--;
return 1;
}

//顯示順序表
void disp(sqlist *L)
{
cout<<"順序表的表長為 "<<L->n<<"\n 數據:\n";
for(int i=1;i<=L->n;i++)
cout<<"序號: "<<i<<" 數據: "<<L->data[i]<<endl;
}
void main()
{
sqlist *L=NULL;
datatype x;
int ch,i;
XX: while(1)
{
cout<<" 主菜單 \n "
<<" 0.退出\n "
<<" 1.建立順序表\n "
<<" 2.插入數據\n "
<<" 3.刪除數據\n "
<<" 4.顯示順序表\n ";
cin>>ch;
switch(ch)
{
case 0:
delete(L); //退出程序,撤銷順序表
return;
break;
case 1:
cout<<"請輸入順序表的數據(輸入 0 退出!)"<<endl;
L=creat();
cout<<"順序表已建成!\n";
break;
case 2:
cout<<"請輸入您要插入的值\n";
cin>>x;
cout<<"插入的位置:\n";
cin>>i;
if( insert(L,x,i)==1 ) cout<<"插入成功!"<<endl;
else cout<<"插入失敗! "弊簡<<endl;
break;
case 3:
cout<<"請輸入您要刪除的值\n";
cin>>x;
if(deletex(L,x)==1) cout<<"成功刪除數據 "<<x<<endl;
else cout<<"該順序表沒有數據 "<<x<<endl;
break;
case 4:
disp(L);
break;
default:
cout<<"或卜備 輸入非法! 請輸入 0~4選項!"<<endl;
goto XX;

}
}
}
//如果,還有什麼問題,歡迎追問!.^_^.

『貳』 幾個線性表的問題(c語言編程)《最好教教我演算法到底應該怎麼寫,3Q》

這么多個題才給10分,沒多少人願意幫忙的

『叄』 C++怎樣實現線性表的建立、插入、刪除、倒序

{int pivokey=L->data[low];
L->data[0]=L->data[low];


while (low<high)
{
while ((low<high) && (L->data[high]>=pivokey))
high--;
L->data[low]=L->data[high];
while ((low<high) && (L->data[low]<=pivokey))
low++;
L->data[high]=L->data[low];
}


L->data[low]=L->data[0];
return low;
}
void Qsort(SeqList *L, int low, int high)
{
int pivotloc;
if (low<手拆耐high)
{
pivotloc=Partition(L,low,high);
Qsort(L,low,pivotloc-1);
Qsort(L,pivotloc+1,high);
}}


void Merge(SeqList *L, int i, int m, int n)
{
SeqList L1;
int p,q,k;
for (q=m+1;q<=n;q++)
L1.data[q]=L->data[q];
p=m;
q=n;
k=n;
while ((p>=i)&&(q>=m+1))
{
if (L->data[p]>L1.data[q])
{
L->data[k]=L->data[p];
p--;
}
else
{
L->data[k]=L1.data[q];
q--;
}
k--;
}
if (p<i) //尾部處理
for (p=q;p>=m+1;p--)
{
L->data[k]=L1.data[p];
k--;
}}

『肆』 用c語言編寫程序1.建立一個線性表,輸入n個元素並輸出2.查找最大元素並輸出

線性表 可以使用鏈表 或者數組實現

以老高動態數組為例

#include<stdio.h>
#include<stdlib.h>
intmain()
{
int*a,n,max,i;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i枯稿++)
scanf("%d",a+i);
for(i=1,max=a[0];i<n;i++)
if(max<a[i])max=a[i];
printf("%d "沒含孝,max);
free(a);
return0;
}

『伍』 C語言程序設計:將線性表的前m個元素和後n個元素互換

#include <stdio.h>
#include <iostream>
#include <iomanip> //格式輸出

using namespace std;

#define maxlen 50

struct List
{
int data[maxlen];
int listlen;
}seqlist; //順序表

int change(int* ptr, int length, int m, int n) //一個輔助空間使前m個元素與後n個元素整體互換,ptr為數組頭指針,length為數組長度
{
int i,j;
int temp; //一個輔助空間
int* mark;
if(m+n>length)
return -1;

if(m == n) //前後調換個碧差數相同,中間數據不用移動
{
for(i=0; i<m; i++)
{
temp = *ptr;
*ptr = *(ptr + length - n);
*(ptr + length - n) = temp;
ptr++;
}
}

else if(m > n) //m>n,中間數據整悔簡皮體前移
{
for(i=0; i<n; i++)
{
temp = *ptr;
*ptr = *(ptr + length - n);
*(ptr + length - n) = temp;
ptr++;
}

mark = ptr;
for(j=0; j<m-n; j++)
{
temp = *ptr;
for(i=n; i<length-1; i++)
{
*ptr = *(ptr + 1);
ptr++;
}
*ptr = temp;
ptr = mark;
}

}
else //m<n,中間數咐鏈據整體後移
{
for(i=0; i<m; i++)
{
temp = *ptr;
*ptr = *(ptr + length - n);
*(ptr + length - n) = temp;
ptr++;
}
mark = ptr + length - n;
for(j=0; j<n-m; j++)
{
ptr = mark;
temp = *ptr;
for(i=length-n+m; i>m; i--)
{
*ptr = *(ptr - 1);
ptr--;
}
*ptr = temp;
mark++;
}
}

return 0;
}

int main(int argc, int* argv[])
{
int i;
seqlist.listlen = 0;
for(i=0; i<maxlen; i++)
{
seqlist.data[i] = i;
seqlist.listlen++;
}
if(-1 == change(&seqlist.data[0], seqlist.listlen, 10, 15))
cout << "Error! " << endl; //如果m+n>順序表實際長度,則認為出錯,函數返回-1

for(i=0; i<maxlen; i++)
cout << "[" << setw(2) << i << "] : " << seqlist.data[i] << endl;
return 0;
}

『陸』 如何將數據輸入到線性表用c++語言

#include"iostream.h"
class num
{
private:
int a[100];
int length;
public:
num()
{
length=0;
}
num(int x[],int len)
{
if(len>100)
{
cout<行桐轎<"data overflow!"<<endl;
num(x,100);
}
else
if(len>=0)
{
for(int i(0);i<len;i++)
a[i]=x[i];
length=len;
}
else
{
cout<<"parameter error!"<<endl;
num();
}
}
void set(int len)
{
if(len>100||len<0)
{
cout<<"parameter error!"<<endl;
}
else
{
for(int i=0;i<len;i++)
cin>>a[i];
length=len;
}
} void print()
{
for(int i=0;i<length;i++)
cout<<a[i]<檔肆<' ';
} int find(int flag,int n)//查找,沒有找到就顯示-1
{
for(int i=n;i<length;i++)
if(a[i]==flag)
break;
if(i==length)
{
return -1;
}
else
return i;
}/* void insert(int flag,int data) //插入,元素定位
{ if(length==100)
cout<<"can't insert more!"<<endl;
else
if(find(flag,0)==-1)
cout<<"not find!"<<endl;
else
{
int f=find(flag,0);
do
{

for(int i=length;i>f;i--)
a[i+1]=a[i];
a[i+1]=data;
f=find(flag,f+2);
length++;
}while(f!=-1);
}
}*/ void delet(int flag)//刪除,元素定位
{
if(length==0)
cout<<"can't delete more!"<<endl;
else
if(find(flag,0)==-1)
cout<<"not find!"<<endl;
else
{
int f=find(flag,0);
do
{
for(int i=f;i<length;i++)
a[i]=a[i+1];
f=find(flag,f);
length--;
}while(f!=-1);
}
}
};void main()
{
int n,f;
cout<<"輸入數據數"<<輪頌endl;
cin>>n;
num a;
cout<<"輸入數據"<<endl;
a.set(n);
cout<<"刪除的數據"<<endl;
cin>>f;
a.delet(f);
a.print();
}//主函數簡單啦啊,另編吧

『柒』 編程題 反轉線性表-順序表 C++做

#include<iostream>
usingnamespacestd;
typedefstructnode{
intdata;
node*next=NULL;
}*Node,*List;

ListgetList(intn){

intcnt=0;

Nodehead=(Node)malloc(sizeof(Node));

head->next=NULL;

Nodetemp,last=head;

while(cnt<n){

temp=(Node)malloc(sizeof(Node));

temp->next=NULL;

temp->data=++cnt;

last->next=temp;

last=temp;

}

returnhead;
}

Listreverse(Listl){

Nodehead=l,temp;

l=l->next;

head->next=NULL;

while(l!=NULL){

temp=head->next;

head->改慧next=l;

l=l->next;

head->next->next=temp;

}



returnhead;

}


voidprint(Listl){

l=l->next;

while(l!=NULL){

if(l->next!=NULL)cout<<l->data<<兆悄"";

elsecout<<l->data;

l=l->next;

}

}

intmain(){

int族殲渣n;

cin>>n;

Listl=getList(n);

l=reverse(l);

print(l);

return0;
}

『捌』 C語言創建一個線性表,然後輸出線性表,如何編寫程序

#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>

#defineOVERFLOW -2
#define OK 1
#define ERROR 0
#defineLIST_INIT_SIZE 100
#defineLISTINCREMENT 10

typedef intElemType;
typedef intStatus;
//定義順序存儲結構
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
//初始化順序表
StatusInitList_Sq(SqList &L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem ) exit(ERROR);
L.length =0;
L.listsize =LIST_INIT_SIZE;
return OK;
}
//自定義創建順序表
voidCreate_SqList(SqList &L)
{
int c,i=0;
int *newBase;
printf("請輸入順序表元素:\n");
while((scanf("%d",&c))!=EOF)
{
if(i>=L.listsize) //自定義順序表大小超過初始化大小
{
newBase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
//為初始順序表以LISTINCREMENT大小重新增加存儲空間
if(!newBase)exit(OVERFLOW);
L.elem=newBase;
L.listsize+=LISTINCREMENT;
}
L.elem[i++]=c;
}
L.length=i;
printf("輸入的順序表元素:\n");
for(i=0;i<L.length;i++)
printf("%d ",L.elem[i]);
printf("\n");
}
//在指定位置插入元素
StatusListInsert(SqList &L,int i,ElemType e)
{
ElemType *p,*q,*newbase;
if(i<1||i>L.length+1)
{
printf("插入位置錯誤\n");
return(ERROR);
}
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;
}
if(i==L.length) L.elem[i+1]=e;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
//在指定位置刪除元素
StatusListDelete_Sq(SqList &L,int i,ElemType *e)
{
ElemType *p,*q;
if(i<1||i>L.length+1)
return ERROR;
p=&(L.elem[i-1]);
*e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length ;
return OK;
}

void main()
{
SqList L;
int m,n;
int location,element;
if(!InitList_Sq(L))
{
printf("初始化順序表失敗!\n");
exit(ERROR);
}
Create_SqList(L);
for(m=0;m<3;m++)
{
printf("輸入插入位置:");
scanf("%d",&location);
while(location>L.length+1||location<1)
{
printf("輸入位置錯誤,請重新輸入!\n");
scanf("%d",&location);
}
printf("插入元素:");
scanf("%d",&element);
if(!ListInsert(L,location,element))
{
printf("順序表插入失敗!\n");
exit(ERROR);
}
printf("插入順序表為:\n");
for(int i=0;i<=L.length -1;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n新順序表一共有%d個元素。\n",L.length);
}
for(n=0;n<3;n++)
{
printf("輸入刪除位置:");
scanf("%d",&location);
while(location>L.length||location<1)
{
printf("輸入位置錯誤,請重新輸入!\n");
scanf("%d",&location);
}
if(!ListDelete_Sq(L,location,&element))
{
printf("刪除錯誤!\n");
exit(ERROR);
}
printf("被刪除的元素為:%d \n",element);

printf("被刪除後的順序表為:\n");
for(int j=0;j<=L.length-1;j++)
{
printf("%d ",L.elem[j]);
}
printf("\n新順序表一共有%d個元素。\n",L.length);
}
}
這個是我最近編寫的 順序表也是線性表的
這里還有鏈表的程序 用的話再傳給你

『玖』 數據結構 線性表 用c語言

#define MAXSIZE 100 //表中元素的最大個數

typedef int ElemType;//元素類型

typedef struct list{

ElemType elem[MAXSIZE];//靜態線性表

int length; //表的實際長度

}SqList;//順序表的類型名

『拾』 數據結構用C++如何寫編程,比如編寫一個線性表的刪除操作

新增加兩個結構體,添加一些類型虛悔爛定義和宏定義,前游你這個函數可以不用修改: #define MAX_LENGTH 256 #define ERROR 0 #define OK 1 typedef int Status; typedef struct tagElem { char data1; int data2; ... } ElemType; typedef struct tagSqList { ElemType elem[MAX_LENGTH]; int length; // < MAX_LENGTH } SqList; Status ListDelete_Sq(SqList &L, int i, ElemType &e) { /差漏/ 演算法2.5 ...

熱點內容
比較便宜的雲伺服器 發布:2025-07-13 18:29:59 瀏覽:404
切換ftp 發布:2025-07-13 18:29:07 瀏覽:737
銳龍哪個配置最高畫質 發布:2025-07-13 18:22:34 瀏覽:196
壓縮機工作原理圖 發布:2025-07-13 18:10:15 瀏覽:39
黑暗追求者安卓怎麼聯機 發布:2025-07-13 18:10:07 瀏覽:617
北大保安自學編程 發布:2025-07-13 18:09:58 瀏覽:858
java遞歸排列 發布:2025-07-13 18:02:43 瀏覽:473
輕量雲伺服器如何換成d盤 發布:2025-07-13 17:58:45 瀏覽:931
重置騰訊雲伺服器時間 發布:2025-07-13 17:54:55 瀏覽:326
aes256java加密 發布:2025-07-13 17:54:46 瀏覽:710