#include<stdio.h>
#include<stdlib.h>
#define Maxsize 5
// int i是線性表長度
typedef struct List //線性表的定義
{
char data[Maxsize];
int length;
}List;
void inList(List *L) //線性表的初始化
{
L=(List *)malloc(sizeof(List)); //給線性表分配空間
L->length=0; //使表長為0
}
void InputList(List *L,int i) //給線性表輸入元素
{
int p;
for(p=0;p<i;p++)
{
printf("請輸入你想要輸入的元素:");
scanf("%c",&L->data[p]);
}
}
void outputList(List*L,int i) //輸出線性表元素
{
int p;
for(p=1;p<i;p++)
{
printf("線性表第%d個元素為:%c",p,L->data[p]);
printf("\n");
}
}
int InsertList1(List*L,int i) //用尾插法插入元素
{
int p,m;
printf("請輸入你想插入元素個數:");
scanf("%d",&p);
L->length=i+p;
for(m=1;(m+i)<=L->length;m++)
{
printf("請輸入你想輸入的元素:");
scanf("%c",&L->data[m+i]);
}
return L->length; //回傳現在元素個數
}
int InsertList2(List*L,int i) //在中間插入元素
{
int m;
printf("你計劃在第幾個元素插入新元素:");
scanf("%d",&m);
for(;i>=m;i--)
{
L->data[i+1]=L->data[i]; //使m后的元素均向后挪一位,從末位開始挪
}
printf("你想插入的元素為:");
scanf("%c",&L->data[m]);
L->length++;
return L->length; //回傳現在線性表的長度
}
int deleteList(List*L,int i) //洗掉線性表元素
{
int m;
printf("輸入你想洗掉的線性表第幾個元素:");
scanf("%d",&m);
for(;m<=i;m++) //從被洗掉元素開始,元素集體往前挪一位
{
L->data[m]=L->data[m+1];
}
return L->length;
}
void DestoryList(List*L) //銷毀線性表
{
free(L);
}
int main() //主函式
{
int i,a;
List *L;
printf("請輸入你想要輸入元素的個數:"); //獲得線性表長度,i為表長
scanf("%d",&i);
InputList(L,i);
outputList(L,i);
i=InsertList1(L,i);
outputList(L,i);
printf("線性表第三個元素為:%c",L->data[3]); //輸出線性表第三個元素
printf("線性表的長度為:%d",i); //輸出線性表長度
i=InsertList2(L,i); //插入新元素,更新插入元素后的線性表長度
for(a=1;a<=i;a++) //輸出線性表元素
{
printf("線性表的元素有:%c",L->data[a]);
}
i=deleteList(L,i); //洗掉線性表
outputList(L,i); //輸出目前線性表元素
DestoryList(L); //摧毀線性表
return 0;
}
用vc運行時到輸入元素那一步輸入不進元素

用vc除錯就反應這樣

用別的編譯器運行時這樣。。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/121530.html
標籤:C語言
上一篇:c++hashmap如何使用int與string型別計算hash_value()方法所有域總的hash值?
下一篇:小白求助,這個0x00007FFC618DC4D8 (ucrtbase.dll) (test2.exe 中)處有未經處理的例外: 將一個無效引數傳遞給了將無效參
