?? 插入(順序存儲).cpp
字號:
/* 實驗內容
2.線性表v的數據遞增有序,試將x插入表中并保持有序性
(1)順序表表示
*/
#include "stdio.h"
#include"malloc.h"
#define MAXSIZE 20
typedef int elemtype;
typedef struct
{ elemtype data[MAXSIZE];//存放順序表元素
int length;//存放順序表的長度
} LNode;//順序表的定義類型
void creat(LNode *L)//創建順序鏈表
{ int i,n,j=0;
// int c[100];
printf("請問,你想輸幾個數:");
scanf("%d",&n);
L->length=n;
printf("請輸入%d個數:",n);
/* for(i=0;i<100;i++)
{
scanf("%d",&L->data[i]);
j++;//用來記錄輸入數據的個數
c[i]=getchar();//輸入的數存放在c中
if (c[i]=='\n')
{
break;
}
else if(c[i]=='$')
{
j--;
break;
}*/
for(i=0;i<n;i++)
scanf("%d",&L->data[i]);
// if(j>n)
// printf("你輸入的數大于你想要輸入數的個數,請重新輸入");
// else
//{
printf("你輸入%d個數據為:",n);
for(i=0;i<n;i++)
printf("%d ",L->data[i]);
printf("\n");
getchar();
//}
}
int Insert(LNode *L,int i,int x)//在鏈表L的i位置插入值x
{ int j;
if(i<0||i>L->length+1)
{ printf("輸入的位置值有誤\n");
return 0;
}
if(L->length+1>=MAXSIZE)
{ printf("溢出錯誤!");
return 0;
}
for(j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];//將data【i】及其后面的元素后移一個位置
i=i-1;
L->data[i]=x;//將x插入
L->length++; //順序表長度增1
return 1;
}
int deletelist( LNode *L,int i)//刪除第i個位置
{
if(i<0 ||i>L->length)
{ printf("位置不存在!\n");
return 0;
}
for(;i<L->length;i++)
L->data[i-1]=L->data[i];//將data【i】之后的元素前移一個位置
L->length--;//順序表長度減1
return 1;
}
void print(LNode *L)//輸出鏈表
{ int i;
for(i=0;i<L->length;i++)
printf("%5d",L->data[i]);
printf("\n");
getchar();
}
void main()
{ LNode *L;
int i,x;
//clrscr();
L=(LNode *)malloc(sizeof(LNode));
creat(L);
printf("請輸入插入的位置和值(中間按間隔隔開):\n");
scanf("%d %d",&i,&x);
Insert(L,i,x);
printf("插入后的鏈表為:");
print(L);
printf("請輸入想刪除的位置 :");
scanf("%d",&i);
deletelist(L,i);
printf("刪除后的鏈表為:");
print(L);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -