導航:首頁 > 源碼編譯 > 如何用c編譯順序表的輸入內容

如何用c編譯順序表的輸入內容

發布時間:2022-11-15 17:28:59

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

樓主你好
修改如下:
#include<stdio.h>
#include<malloc.h>
#define MaxSize 40 //順序表存儲空間的初始分配量 --> (1)可以將MaxSize調大點兒
typedef struct
{
int *p;
int data[MaxSize];
int length;
int listsize;
}SeqList;
void InitList(SeqList &x) //定義順序表的初始化函數
//--> (2)這里應該是SeqList &x 需要址傳遞 值傳遞是不會改變實參值的
{
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("數據錯誤!\n");
return 0;
}
if(n>MaxSize)
{
L.p=(int*)realloc(L.p,n*sizeof(int));
if(!L.p)printf("存儲空間擴展失敗!\n");
L.listsize=n;
}
printf("請輸入數據:");
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語言實現用順序表完成輸入一串字元,在插入,計算長度,刪除計算長度,最後輸出,拜託拜託=v=

java">#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#definemaxsize100
typedefcharelepmtype;
typedefstructsequlist
{
elepmtypedata[maxsize];
intnum;
//intlength;//和num的功能不是一樣的么
}SeqList,*LinkList;
voidListInitiate(LinkList*L)//利用二級指針,初始化順序表,你這里是想模仿我的那個二級指針方法嗎?
{
(*L)=(LinkList)malloc(sizeof(SeqList));
(*L)->num=0;//初始化為0
}
voidInputSeqList(SeqList*L)//跟人家借一個輸入函數
{
charstr[maxsize];
printf("輸入字元串:");
gets(str);
for(inti=0;str[i]!='';i++){//這個地方用''字元就好了,因為字元數組或者字元串的結束符都是
L->data[i]=str[i];
L->num++;
}
}
intInsertList(SeqList*L,inti,elepmtypex)/*i取值從0到maxsize-1*/
{
intj;
if(i<0||i>L->num+1)
{printf("error ");return(0);}/*檢查插入位置的合理性*/
if((L->num==maxsize-1))/*表滿則不能插入*/
{printf("插入位置錯 ");return(0);}
for(j=L->num;j>=i;j--)/*結點後移,為插入騰出空間*/
L->data[j+1]=L->data[j];//這里應該是L->data不是List,而且向後移動數據的話
L->data[i]=x;//新元素插入
L->num++;/*調整last指向最後元素*/
return(1);/*成功返回1*/
}
//刪除函數
intListDelete(SeqList*L,inti,elepmtype*x)//這是不是分號是逗號
{
intj;
if(L->num<0)
{
printf(" thelistisempty!");
return0;
}
elseif(i<0||i>L->num)//掉了一個>
{
printf(" thepositionisinvialid");
return0;
}
else
{
*x=L->data[i];//這里記錄了x的值
for(j=i+1;j<=L->num;j++){
L->data[j-1]=L->data[j];//改成這樣看著比較舒服
}
L->num--;

}
return1;
}
intListLength(SeqList*L)//這里怎麼多了一個分號
{
returnL->num;
//inti;
//i=0;
//for(i=0;i<=n;i++)
//return(i);//return只會執行一次。
}
voidOutputSeqList(SeqList*L)
{
if(0==L->num)//你定義的是num啊,怎麼又寫成了last,代碼亂入啊
return;

for(inti=0;i<L->num;i++){
printf("%c",L->data[i]);
}
printf(" ");
printf("字元串有%d個字元 ",ListLength(L));//你的函數的名字是ListLength,不是length
}
intmain()
{
SeqList*sq;
ListInitiate(&sq);//將sq指針的地址傳給了SeqList**L,進行初始化,充當了一個全局變數的作用
//InitList(&sq);
InputSeqList(sq);
OutputSeqList(sq);
//InsertSeqList(sq,1,'a');
InsertList(sq,1,'a');
OutputSeqList(sq);
//DelSeqList(sq,2);
charc;
ListDelete(sq,2,&c);
OutputSeqList(sq);
printf("%c成功被刪除 ",c);
system("PAUSE");
return0;
}
不懂的直接加Q,Q已給你私信

Ⅲ c語言順序表的輸入函數

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

Ⅳ c語言編程 運用順序表實訓字元串操作

#include<stdio.h>
#include<string.h>
void main()
{
int i;
char j, a[1000],b[1000];
gets(a);
strcpy(b, a);
printf("%d\n", strlen(a));
printf("插在第幾個數後面,輸個數字\n");
scanf("%d", &i);
printf("要插入的數字,輸個字元\n");
while(getchar()!='\n');
scanf("%c", &j);
*(a+i)= j;
strcpy(a+i+1, b+i);
puts(a);
strcpy(b, a);
printf("刪第幾個數,輸個數字\n");
scanf("%d", &i);
strcpy(a+i-1, b+i);
printf("刪了之後\n");
puts(a);
printf("倒敘輸出為\n");
for(i=strlen(a)-1; i!=-1 ; printf("%c", *(a+i--)));
printf("\n");

}

Ⅳ 用c語言編一個順序表

就編一個順序表?那直接定義個數組也算是順序表了。下面是我學數據結構做練習時寫的順序表的建立、插入、刪除等操作的代碼: #include<stdio.h> #define MAXSIZE 10 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -1 typedef struct{ int elem[MAXSIZE]; int length; }SeqList; void init_SeqList(SeqList *l) {l->length=0;}/*順序表初始化*/ int Insert_SeqList(SeqList *l,int i,int x) {int j; if(l->length==MAXSIZE-1) {printf("表滿"); return OVERFLOW; } if(i<1||i>l->length+1) {printf("位置錯"); return ERROR;} for(j=l->length;j>=i;j--) l->elem[j+1]=l->elem[j]; l->elem[i]=x; l->length++; return OK; }/*順序表插入*/ int Delete_SeqList(SeqList *l,int i) {int j; if(i<1||i>l->length) {printf("不存在第%d個元素",i); return ERROR; } for(j=i;j<=l->length-1;j++) l->elem[j]=l->elem[j+1]; l->length--; return OK; }/*刪除操作*/ int Location_SeqList(SeqList *l,int x) {int i=1; while(i<=l->length&&l->elem[i]!=x) i++; if(i>l->length) return -1; else return i; } void Create_SeqList(SeqList *l) {int i,n,m; printf("輸入表的長度:\n"); scanf("%d",&n); l->length=n; printf("請輸入數值:\n"); for(i=1;i<=n;i++) {scanf("%d",&m); l->elem[i]=m; } } void Print_SL(SeqList *l) {int i; printf("The List is:\n"); for(i=1;i<=l->length;i++) printf("%3d",l->elem[i]); } void main() {SeqList a; int i,x,ch; init_SeqList(&a); Create_SeqList(&a); printf("請選擇:1.插入 2.刪除: "); scanf("%d",&ch); switch(ch){ case 1:printf("請輸入位置和數值:\n"); scanf("%d%d",&i,&x); Insert_SeqList(&a,i,x); break; case 2:printf("請輸入要刪除的位置\n"); scanf("%d",&i); Delete_SeqList(&a,i); break; default: exit(0); } Print_SL(&a); }

Ⅵ 用C語言編寫一個有關順序表的程序代碼

#include <stdio.h>
#include <malloc.h>

#define MaxSize 50

typedef char ElemType;

typedef struct
{
ElemType elem[MaxSize];
int length;
}SqList;

void InitList(SqList *L) /* 初始化順序表 */
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}

void CreateListR(SqList *L,ElemType a[],int n) /*創建順序表 */
{

int i;
for(i=0;i<n;i++)
L=(SqList *)malloc(sizeof(SqList));
L->elem[i]=a[i];
L->length++;
}

void DispList(SqList *L) /* 輸出順序表 */
{
int i;
if(ListEmpty(L)) return;
for(i=0;i<L->length;i++)
printf("%c",L->elem[i]);
printf("\n");
}

int ListLength(SqList *L) /* 求順序表的長度 */
{
return(L->length);
}

int ListEmpty(SqList *L) /* 求順序表是否為空 */
{
return(L->length==0);
}

int GetElem(SqList *L,int i,ElemType e) /*求順序表中某個數據的元素值 */
{
if(i<1||i>L->length)
return 0;
else
e=L->elem[i-1];
return 1;
}

int LocateElem(SqList *L,ElemType e) /*按值查找元素*/
{
int i=0;
while(i<L->length&&L->elem[i]!=e) i++;
if(i>=L->length)
return 0;
else
return i+1;
}

int ListInsert(SqList *L,int i,ElemType e) /*按i位置插入元素*/
{
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for (j=L->length;j>i;j--)
L->elem[j]=L->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}

int ListDelete(SqList *L,int i,ElemType e) /*刪除某個位置的元素*/
{
int j;
if (i<1||i>L->length)
return 0;
i--;
e=L->elem[i]; /*e中的放elem[i]有何用..以後沒用到*/
for(j=i;j<L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}

void DestroyList(SqList *L) /*銷毀鏈表*/
{
free(L);
}

void main()
{
SqList L;
ElemType a[]={'a','b','c','d'};
int c;
int e;
while(1)
{
printf("Please Choose the step you want ?\n\n");
scanf("%d",&c);
if(c==0) break;
switch(c)
{
case 1: InitList(&L);break;
case 2: CreateListR(&L,a,4);break;
case 3: DispList(&L);break;
case 4: printf("long %d", ListLength(&L));break;
case 5: printf("%d",ListEmpty(&L));break;
case 6: GetElem(&L,3,e);break;
case 7: LocateElem(&L,'a');break;
case 8: ListInsert(&L,4,'f');break;
case 9: DispList(&L);break;
case 10: ListDelete(&L,3,e);break;
case 11: DispList(&L);break;
case 12: DestroyList(&L);break;
default: printf("error data");break;
}

}

}

Ⅶ 基於C語言的數據結構,怎樣做順序表插入

1、順序表的插入,常用方法就是從插入點後平移數據。
2、例如:
void InsertSeqList(SeqList L, DataType x, int i)
{ //將元素x插入到順序表L的第i個數據元素之前
if(L.length==Maxsize) exit("表已滿");
if(i<1||i>L.length+1) exit("位置錯");
for (j=L.lenght; j>=i;j--)
L.data[j]=L.data[j-1]; //平移插入點之後的數據
L.data[i-1]=x; //在插入點插入數據
L.length++;
}
L.data[j]=L.data[j-1];的意思是把要插入的位置後的數據都依次往後面移動一位,比如要插入在第6個位置上,共8個數據的鏈表裡,先把第8個數據復制到第9個位置上,在把第7個數據復制到第8個位置上,在把第6個數據復制到第7個位置上。這樣第6個位置後就可以寫入,覆蓋掉以前的值就好了。這樣做的意思是騰出可以插入的地方而不破壞數據的順序排放。

Ⅷ c語言實現順序表

--順序表.h
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FLASE 0
typedef int Elemtype;
typedef int Status;

/*介面定義
Status InitList_Sq(SqList &L,int size,int inc);
void CreateList_Sq(SqList &L);
void print_Sq(SqList &L);
int Search_Sq(SqList L, Elemtype e);
Status DestroyList_Sq(SqList &L);
Status ClearList_Sq(SqList &L);
Status ListEmpty_Sq(SqList L);
int ListLength_Sq(SqList L);
Status GetElem_Sq(SqList L, int i, Elemtype &e);
Status PutElem_Sq(SqList &L, int i, Elemtype e);
Status Append_Sq(SqList &L, Elemtype e);
Status DeleteLast_Sq(SqList &L, Elemtype &e);
*/
--------------------
#include "順序表.h"

//定義順序表類型
typedef struct {
Elemtype *elem;
int length;
int listsize;
int increment;
}SqList;

//初始化順序表
Status InitList_Sq(SqList &L,int size,int inc) {

L.elem = (Elemtype *)malloc(size * sizeof(Elemtype));
L.length = 0;
L.listsize = size;
L.increment = inc;
return TRUE;
}

//創建順序表
Status CreateList_Sq(SqList &L) {
int i;
printf("請輸入你要創建的順序表元素個數:\n");
scanf_s("%d", &L.length);
if (L.length >= L.listsize) {
L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype));
}
if (!L.elem) {
return FLASE;
}
printf("請輸入你要創建的順序表:\n");
for (i = 0; i<L.length; i++) {
scanf_s("%d", &L.elem[i]);
}
}

//遍歷順序表
void print_Sq(SqList &L) {
int i;
for (i = 0; i<L.length; i++) {
printf("%4d", L.elem[i]);
}
}

//查找元素的位置
int Search_Sq(SqList L, Elemtype e) {
int i = 0;
while (L.elem[i] != e&&i<L.length) {
i++;
}
if (i>L.length)
return -1;
else
return i + 1;//因為C語言是從下標為0開始的,當i=0時表示第一個元素
}

//銷毀順序表
Status DestroyList_Sq(SqList &L) {
if (L.elem == NULL)
return -1;
else
free(L.elem);
printf("\n銷毀成功\n");
return TRUE;
}

//清空順序表
Status ClearList_Sq(SqList &L) {
if (L.elem == NULL)
exit(0);
int i;
Elemtype *p_elem = L.elem;
for (i = 0; i<L.length; i++) {
*L.elem = NULL;
L.elem++;
}
L.elem = p_elem;
}

//判斷順序表是否為空
Status ListEmpty_Sq(SqList L) {
int i;
Elemtype* p_elem = L.elem;
for (i = 0; i<L.length; i++) {
if (*L.elem != 0) {
L.elem = p_elem;
return FLASE;
}
L.elem++;
}
return TRUE;
}

//求順序表的長度
int ListLength_Sq(SqList L) {
return L.length;
}

//用e返回順序表L中第i個元素的值
Status GetElem_Sq(SqList L, int i, Elemtype &e) {
int j;
Elemtype* p_elem = L.elem;
if (i<1 || i>L.length)
return FLASE;
for (j = 1; j <= i; j++)
L.elem++;
e = *L.elem;
L.elem = p_elem;
return TRUE;
}

//將順序表L中第i個元素賦值為e
Status PutElem_Sq(SqList &L, int i, Elemtype e) {
L.elem[i - 1] = e;
return TRUE;
}

//在順序表L表尾添加元素e
Status Append_Sq(SqList &L, Elemtype e) {

L.elem[L.length] = e;
L.length++;
L.listsize += L.increment;
return TRUE;
}

//刪除順序表L表尾元素
Status DeleteLast_Sq(SqList &L, Elemtype &e) {
e = L.elem[L.length - 1];
L.length--;
return TRUE;
}

********************************************主函數.c*************************************************

#include <stdio.h>
#include <stdlib.h>
#include "順序表.h"
#include "源代碼.h"

//--------------------主函數入口--------------------

int main(){
SqList L;
int size, inc;
int e;
int a;
int length;
int i;
int temp;
int j=10;
int ee;
printf("\n--------------------順序表初始化------------------\n");
printf("請輸入順序表的長度size以及擴容量:\n");
scanf_s("%d %d", &size, &inc);
InitList_Sq(L, size, inc);
CreateList_Sq(L);

printf("\n--------------------判斷是否為空------------------\n");

if(ListEmpty_Sq(L)){
printf("該順序表為空\n");
}
else
printf("該順序表不為空\n");

printf("\n--------------------遍歷順序表--------------------\n");

printf("此時順序表為:\n");
print_Sq(L);

printf("\n--------------------查找元素----------------------\n");

printf("\n請輸入要查找的元素:\n");
scanf_s("%d",&e);
a = Search_Sq(L, e);
printf("%d為第%d位:\n",e,a);

printf("\n--------------------輸出長度----------------------\n");

length = ListLength_Sq(L);
printf("順序表的長度為%d\n",length);

printf("\n----------將順序表L中第i個元素賦值為temp----------\n");

printf("請輸入第i個元素的i值和temp值:\n");
scanf_s("%d %d",&i,&temp);
PutElem_Sq(L, i, temp);
printf("\n此時順序表為:\n");
print_Sq(L);

printf("\n---------------在順序表表尾添加元素---------------\n");

Append_Sq(L, j);
printf("\n此時順序表為:\n");
print_Sq(L);

printf("\n---------------在順序表表尾刪除元素---------------\n");

DeleteLast_Sq(L, ee);
printf("\n被刪除的元素為%d\n",ee);
printf("此時順序表為:\n");
print_Sq(L);

printf("\n-------------------清空順序表---------------------\n");

ClearList_Sq(L);
if(ListEmpty_Sq(L)){
printf("\n清空成功\n");
}

printf("\n------------------銷毀順序表----------------------\n");

DestroyList_Sq(L);
getchar();
getchar();
return 0;
}

Ⅸ 用c語言編寫一段程序,建立一個順序表(需要自己輸入數據,並插入數據、刪除數據)。

#include<stdio.h>
#defineLIST_INIT_SIZE10
#defineLISTINCREMENT10
#defineERROR0
typedefstruct{
int*elem;
intlength;
intlistsize;
}SqList;
voidInitList_Sq(SqList*l)
{
l->elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!l->elem)exit(0);
l->length=0;
l->listsize=LIST_INIT_SIZE;
}
intInList(SqList*l)
{
int*p,*newbase;
p=l->elem;
while(1)
{
for(;p<l->elem+l->listsize;p++)
{
scanf("%d",p);if(*p==-1)break;l->length++;
}
if((p==l->elem+l->listsize))
{
newbase=(int*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int));
p=l->elem+l->length;
l->listsize=l->listsize+LISTINCREMENT;
if(!l->elem)returnERROR;
}
if(*p==-1)break;
}
return1;
}
voidPrList(SqList*l)
{
int*p,i;
p=l->elem;
for(;p<l->elem+l->length;p++)
printf("%d",*p);
}
intListInsert_sq(SqList*l,inti,inte)
{
int*newbase,*p,*q;
if(i<1||i>l->length)returnERROR;
if(l->length==l->listsize)
{
newbase=(int*)realloc(l->elem,(l->listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)returnERROR;
l->elem=newbase;
l->listsize+=LISTINCREMENT;
}
q=l->elem+i-1;
for(p=l->elem+l->length-1;p>=q;p--)
*(p+1)=*(p);
*q=e;
l->length+=1;
return1;
}
intListDelet_sq(SqList*l,inti)
{
int*p,e;
if((i<1)||(i>l->length))returnERROR;
p=l->elem+i-1;
e=*p;
for(;p<l->elem+l->length-1;p++)
*p=*(p+1);
l->length--;
printf("要刪除的元素是:%d ",e);
return1;
}
voidmain()
{
inti,j,n;
chara;
SqListla;
InitList_Sq(&la);
printf("請輸入順序表中的元素: ");
if(!InList(&la))returnERROR;
do
{
printf("請輸入需要插入元素的位置及元素:(a,b) ");
scanf("%d,%d",&i,&j);
if(!ListInsert_sq(&la,i,j))returnERROR;
printf("是否還需要插入元素?(N/Y)");
getchar();
scanf("%c",&a);
if(a=='N'||a=='n')break;
}while(1);
do
{
printf("請輸入需要刪除元素的位置: ");
scanf("%d",&i);
if(!ListDelet_sq(&la,i))returnERROR;
printf("是否還需要刪除元素?(N/Y)");
getchar();
scanf("%c",&a);
if(a=='N'||a=='n')break;
}while(1);
printf("最後的順序表為: ");
PrList(&la);
}

閱讀全文

與如何用c編譯順序表的輸入內容相關的資料

熱點內容
電子加密貨幣最新政策 瀏覽:377
androidcanvas撤銷 瀏覽:267
安卓手機怎麼把圖標全部下移 瀏覽:183
飢荒被伺服器踢出怎麼進 瀏覽:170
c編譯器哪款好 瀏覽:732
快手寶哥發明什麼app 瀏覽:822
張艷玲編譯 瀏覽:66
android展開收起動畫 瀏覽:237
linuxxz文件 瀏覽:160
在游戲中心裏面怎麼玩到解壓神器 瀏覽:484
電腦發到手機裡面照片怎麼解壓 瀏覽:73
虛擬pdf列印機64位 瀏覽:413
支付寶AES加密和解密 瀏覽:379
編譯實驗原理下載 瀏覽:131
加密防偽溯源系統私人定做 瀏覽:222
掃碼給電動車充電的app叫什麼 瀏覽:760
關閉命令提醒 瀏覽:356
雲賬本app伺服器 瀏覽:499
python輸入數字循環 瀏覽:370
未成年人用什麼app 瀏覽:517