1 /*
2 1.此方法是看着数据结构李葆春自写的顺序表
3 2.此方法Delete 还没限制i 范围。
4 3.此定义只是用来测试用
5
6
7 Levi.
8 date: 2013.1.21
9 */
10 #include <stdio.h>
11 #define ElemType int
12 #define MAX_LEN 20
13
14 typedef struct {
15 ElemType data[MAX_LEN];
16 int len;
17 }SqList;
18
19
20 void Print(SqList L);
21 void SetNull(SqList *L){
22 (*L).len=0;
23 }
24
25 int Length(SqList L){
26 return L.len;
27 }
28
29 ElemType GetElem(SqList L,int i){
30 if(i<1||i>L.len)
31 printf("i's value is error !");
32
33 return L.data[i];
34 }
35
36 int Locate(SqList L,ElemType x){
37 int i=1;
38 if(i<1||i>L.len){
39 printf("i value is not right !");
40 return 0;
41 }
42 while(i<=L.len&&L.data[i]!=x)
43 i++;
44 if(i==L.len){
45 printf("The x is not in SqList");
46 return 0;
47 }
48
49 else
50 return i;
51 }
52
53 int InsertNode(SqList *L,ElemType x,int i){
54 int j;
55 if(i<1||i>(*L).len){
56 printf("Error\n");
57 return 0;
58 }
59 for(j=(*L).len;j>=i;j--)
60 (*L).data[j+1]=(*L).data[j];
61 (*L).data[i]=x;
62 ++(*L).len;
63 Print(*L);
64 return 0;
65
66 }
67
68 int DeleteNode(SqList *L,int i){
69 int j;
70 for(j=i+1;j<=(*L).len;j++)
71 (*L).data[j-1]=(*L).data[j];
72 --(*L).len;
73 }
74
75 void Print(SqList L){
76 int i;
77 for(i=1;i<=L.len;i++)
78 printf("%d ",L.data[i]);
79 printf("\n");
80 }
81
82
83 int main(){
84 SqList L;
85 scanf("%d",&L.len);
86 printf("Len : %d\n",L.len);
87 int i,value,pos;
88 for(i=1;i<=L.len;i++){
89 scanf("%d",&L.data[i]);
90
91 }
92 Print(L);
93
94 scanf("%d %d",&pos,&value);
95 InsertNode(&L,value,pos);
96 printf("%d\n",Length(L));
97 // Print(L);
98 // scanf("%d",&pos);
99 // DeleteNode(&L,pos);
100 // scanf("%d",&value);
101 // int dis=Locate(L,value);
102 // printf("%d",dis);
103
104 scanf("%d",&pos);
105 int dis = GetElem(L,pos);
106 printf("%d\n",dis);
107 // Print(L);
108
109 scanf("%*s");
110 return 0;
111 }
/*
1.此方法是参照严蔚敏的数据结构。
2.用指针数组感觉很容易出错,所以以后还是避免用指针。
Levi.
date:13.01.22
*/
#include <stdio.h>
#include <sys/malloc.h>
#include <stdlib.h>
#define MAX 200
typedef struct SqList{
int *elem;
int len;
int listsize;
}SqList;
void InitList(SqList *L){
L->elem=(int *)malloc(MAX*sizeof(int));
if(!L->elem)
printf("Error!");
(*L).len=0;
(*L).listsize=MAX;
printf("list size = %d\n",(*L).listsize);
}
void DestroyList(SqList *L){
free((*L).elem);
(*L).elem=NULL;
(*L).len=0;
(*L).listsize =0;
}
void ClearList(SqList *L){
(*L).len=0;
}
void GetElem(SqList L,int i,int *e){
if(i<1||i>L.len)
printf("It is Wrong !");
*e=*(L.elem+i-1);
}
int ListInsert(SqList *L,int i,int e){
int *q,*p;
q=(*L).elem+i-1;
for(p=(*L).elem+(*L).len-1;p>=q;--p)
*(p+1) = *p;
*q=e;
++(*L).len;
return 0;
}
int ListDelete(SqList *L,int i){
int *p,*q;
if(i<1||i>(*L).len)
return -1;
p=(*L).elem+i-1;
q=(*L).elem+(*L).len-1;
for(++p;p<=q;++p)
*(p-1)=*p;
(*L).len--;
return 0;
}
void Print(SqList L){
int *p=L.elem;
int i;
for(i=1;i<=L.len;i++){
printf("%d ",*p++);
}
printf("\n");
}
int main(){
int j,pos,value;
SqList L;
InitList(&L);
scanf("%d",&(L.len));
for(j=1;j<=L.len;j++)
scanf("%d",(L.elem+j-1));
Print(L);
scanf("%d %d",&value,&pos);
ListInsert(&L,pos+1,value);
Print(L);
scanf("%d",&pos);
ListDelete(&L,pos+1);
Print(L);
scanf("%d",&pos);
GetElem(L,pos,&value);
printf("%d/n",value+1);
return 0;
}