Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 102e66c

Browse files
【added】数据结构与算法,先给出顺序表、链表、栈、队列,有C版本以及Java版本。
0 parents commit 102e66c

21 files changed

+2556
-0
lines changed

‎README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
## 本系列会把我所学的基本数据结构与算法代码全部分块写出来。后期还会把相关的问题补充,大家一起来讨论咯!!
2+
### 目的:让自己和大家更容易查找以及阅读一些前人积累下来的程序设计基础和灵魂。
3+
#### 队列往后就用纯链式写了吧,这个相对难理解。(其实是想偷懒,,,)
4+
### 本系列说明:一开始会针对每个基本数据结构与算法罗列出代码块,并略为讲解(并会附上完整例子,c和Java版本都有)。等完成这些基本代码的积累后,我会开启针对一些题目结合数据结构进行详细分析的系列。Let's go!!!
5+
***
6+
### 使用姿势:打开txt文件,复制到你的编译器运行即可。
7+
***
8+
## 联系方式:
9+
### 邮箱:jackfrost@fuzhufuzhu.com
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
#include<stdio.h>
2+
//���峣�� �洢�ռ�ij�ʼ������
3+
#define MAXSIZE 20
4+
#define TRUE 1
5+
#define ERROR -1
6+
#define FALSE 0
7+
#define OK 1
8+
//��typedef��������
9+
typedef int Status;
10+
typedef int ElemType;
11+
12+
//����һ���ṹ������
13+
typedef struct{
14+
ElemType data[MAXSIZE];
15+
int length;
16+
} SqList;
17+
//��ʼ������
18+
Status initList(SqList *L){
19+
L->length = 0;
20+
return OK;
21+
}
22+
//�������Ա��ij���
23+
Status getListLength(SqList L){
24+
return L.length;
25+
}
26+
//���Ա����,����Ϊ0
27+
Status clearList(SqList *L){
28+
L->length=0;
29+
return OK;
30+
}
31+
//���Ա�Ϊ�շ���true,���򷵻�false
32+
Status listEmpty(SqList L){
33+
if(L.length==0){
34+
return TRUE;
35+
}
36+
return FALSE;
37+
}
38+
//��ȡָ����Ԫ�ص�ֵ,�����±�Ϊi - 1��Ԫ��,��ֵ��e
39+
Status getElem(SqList L,int i, ElemType *e){
40+
//�ж�Ԫ��λ���Ƿ�Ϸ�[i]
41+
if(i<1||i>L.length){
42+
printf("���ҵ�λ�ò���ȷ \n");
43+
return ERROR;
44+
}
45+
//�ж����Ա��Ƿ�Ϊ��
46+
if(listEmpty(L)){
47+
return ERROR;
48+
}
49+
*e = L.data[i-1];
50+
return OK;
51+
}
52+
//�����Ա��в���ָ����e��ȵ�Ԫ��,������ҳɹ�,���ظ�Ԫ�ص��±�,���򷵻�ERROR
53+
Status locateElem(SqList L,ElemType e){
54+
int i;
55+
for(i=0;i<L.length-1;i++){
56+
if(L.data[i]==e){
57+
return i;
58+
}
59+
}
60+
printf("û�в��ҵ�Ԫ�� %d ָ�����±�\n",e);
61+
return ERROR;
62+
}
63+
//�Զ����� MAXSIZE ��Ԫ��,����ֵΪ0
64+
Status createList(SqList *L){
65+
int i;
66+
for(i=0;i<10;i++){
67+
L->data[i]=0;
68+
}
69+
L->length=10;
70+
return OK;
71+
}
72+
//�����Ա��е�i��λ��ǰ������Ԫ��e
73+
Status listInsert(SqList *L,int i, ElemType e){
74+
//�жϳ����Ƿ�������������μ�����
75+
if(L->length>=MAXSIZE){
76+
printf("�ռ�����,�����ٲ�������\n");
77+
return FALSE;
78+
}
79+
//�жς���λ�õĺϷ���
80+
if(i < 1 || i > L->length) {
81+
printf("����λ�ò���ȷ\n");
82+
return FALSE;
83+
}
84+
int j;
85+
for(j=L->length;j>=i;j--){
86+
L->data[j+1]=L->data[j];
87+
}
88+
L->data[i-1]=e;
89+
L->length++;
90+
return TRUE;
91+
}
92+
//ɾ�����Ա��е�i��Ԫ��,�ɹ��������1,��e������ֵ
93+
Status deleteList(SqList *L, int i, ElemType *e){
94+
//�ж����Ա��Ƿ�Ϊ��
95+
if(listEmpty(*L)){
96+
return ERROR;
97+
}
98+
//�ж�ɾ����λ���Ƿ�Ϸ�
99+
if(i < 1 || i > L->length) {
100+
printf("ɾ��λ�ò��Ϸ�\n");
101+
return ERROR;
102+
}
103+
*e=L->data[i-1];
104+
for(i;i<L->length;i++){
105+
L->data[i-1]=L->data[i];
106+
}
107+
L->length;
108+
return TRUE;
109+
}
110+
//�������Ա�
111+
Status listTraverse(SqList L){
112+
int i;
113+
for(i = 0; i < L.length; i++){
114+
printf("%d ",L.data[i]);
115+
}
116+
printf("\n");
117+
return OK;
118+
}
119+
//������
120+
int main(void){
121+
SqList L;
122+
ElemType e;
123+
initList(&L);
124+
int option = 1;
125+
int input_number;
126+
int res;
127+
ElemType input_value;
128+
printf("\n1.�������Ա� \n2.�������Ա� \n3.������Ա� \n4.���Ա����� \n5.���ұ���Ԫ�� \n6.�ж�Ԫ���Ƿ��ڱ��� \n7.ɾ��ij��Ԫ�� \n8.���Ա�����\n9.���Ա��Ƿ�Ϊ��\n0.�˳� \n��ѡ����IJ�����\n");
129+
while(option){
130+
scanf("%d",&option);
131+
switch(option){
132+
case 0:
133+
return OK;
134+
break;
135+
case 1:
136+
listTraverse(L);
137+
break;
138+
case 2:
139+
createList(&L);
140+
listTraverse(L);
141+
break;
142+
case 3:
143+
clearList(&L);
144+
listTraverse(L);
145+
break;
146+
case 4:
147+
printf("�����������:");
148+
scanf("%d",&input_number);
149+
printf("\n");
150+
printf("����������ֵ:");
151+
scanf("%d",&input_value);
152+
printf("\n");
153+
listInsert(&L, input_number, input_value);
154+
listTraverse(L);
155+
break;
156+
case 5:
157+
printf("������Ҫ���ҵ�λ��:");
158+
scanf("%d",&input_number);
159+
printf("\n");
160+
getElem(L, input_number, &input_value);
161+
printf("��%d��Ԫ�ص�ֵΪ:%d\n",input_number,input_value);
162+
break;
163+
case 6:
164+
printf("������Ҫ���ҵ�Ԫ��:");
165+
scanf("%d",&input_value);
166+
printf("\n");
167+
res = locateElem(L, input_value);
168+
if(res != ERROR){
169+
printf("ֵΪ%d�ڱ��еĵ�%d��λ��\n",input_value,input_number);
170+
}
171+
break;
172+
case 7:
173+
printf("Ҫɾ���ڼ���Ԫ�أ�");
174+
scanf("%d",&input_number);
175+
printf("\n");
176+
deleteList(&L, input_number, &input_value);
177+
listTraverse(L);
178+
break;
179+
case 8:
180+
res = getListLength(L);
181+
printf("���Ա��ij�����:%d",res);
182+
break;
183+
case 9:
184+
res = listEmpty(L);
185+
if(res){
186+
printf("���Ա����ǿյ�");
187+
}else{
188+
printf("���Ա����Dz��ǿյ�");
189+
}
190+
break;
191+
}
192+
}
193+
return OK;
194+
}
195+
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
2+
import java.util.Scanner;
3+
4+
/**
5+
*
6+
* @author ������ ����һ�����Խṹ˳��洢�ṹ��ɻ����Ҳ��������������ɻ�ֵ����Ա���˳��洢�ṹ
7+
*/
8+
9+
class DATA {
10+
String key; //ѧ�� // �������Ԫ�ص�������
11+
String name;//����
12+
int age; //����
13+
}
14+
15+
class SLType { // ������������ɻ�ֵ����Ա�˳��洢�ṹ
16+
static final int MAXLEN = 100; // ����˳�������󳤶�
17+
DATA[] ListData = new DATA[MAXLEN + 1]; // ����˳����Ľṹ����
18+
int ListLen; // ˳����Ѵ��������
19+
20+
void SLInit(SLType SL) { // ��ʼ��˳���
21+
SL.ListLen = 0; // ��ʼ��Ϊ�ձ�
22+
}
23+
24+
int SLLength(SLType SL) { // ����˳�����Ԫ������
25+
return (SL.ListLen);
26+
}
27+
28+
// �������,���ǰ�һ���1⁄2��嵽n��λ�ã�ԭ˳���nλ���Ժ����n�������ƶ�һλ
29+
int SLInsert(SLType SL, int n, DATA data) {
30+
int i;
31+
if (SL.ListLen > MAXLEN) { // ˳�����������ѳ����������
32+
System.out.print("˳������������ܲ�����!\n");
33+
return 0; // ����0����ʾ���벻�ɹ�
34+
}
35+
if (n < 1 || n > SL.ListLen - 1) { // ��������Ų���ȷ
36+
System.out.print("����Ԫ����Ŵ��󣬲��ܲ���Ԫ�أ�\n");
37+
return 0; // ����0����ʾ���벻�ɹ�
38+
}
39+
for (i = SL.ListLen; i >= n; i--) { // ��˳����Ӻ��濪ʼ�ƶ���������n�Ǹ�λ����������λ�ã���n��������λ�õ���ֵҲ�����ƶ�һλ
40+
SL.ListData[i + 1] = SL.ListData[i];
41+
}
42+
SL.ListData[n] = data; // ������
43+
SL.ListLen++; // ˳��������������1
44+
return 1; // �ɹ����룬����1
45+
}
46+
47+
// ����Ԫ�ص�˳���β��
48+
int SLAdd(SLType SL, DATA data) {
49+
if (SL.ListLen >= MAXLEN) { // ˳�������
50+
System.out.print("˳������������������ӽ���x�\n");
51+
return 0;
52+
}
53+
SL.ListData[++SL.ListLen] = data; //˳���û���������Ľ��λ��+1�����Ǹ�λ��set��data
54+
return 1;
55+
}
56+
57+
//��ӡ��ȫ�����˳����е���Ϣ
58+
int SLAll(SLType SL){
59+
int i;
60+
for(i=1;i<=SL.ListLen;i++){
61+
System.out.printf("(%s,%s,%d)\n", SL.ListData[i].key,SL.ListData[i].name,SL.ListData[i].age);
62+
63+
}
64+
return 0;
65+
}
66+
67+
//��ѯ������������ŷ�������Ԫ�أ���ѯһ����㣬����һ�����
68+
DATA SLFindByNum(SLType SL,int n){
69+
70+
if(n<1||n>SL.ListLen+1){ //Ԫ����Ų���ȷ�򷵻�null
71+
System.out.print("�����Ŵ��󣬲��ܷ��ؽ�㣡\n");
72+
return null;
73+
}
74+
return SL.ListData[n]; //Ԫ����Ų�Ϊ�գ��򷵻�Ҫ��ѯ�ĸý��
75+
}
76+
77+
//���ݽ����Ϣ�Ĺؼ���(����ָ����ѧ��)���в���
78+
int SLFindByCont(SLType SL,String key){
79+
int i;
80+
for(i=1;i<=SL.ListLen;i++){ //��������˳���
81+
if(SL.ListData[i].key.compareTo(key)==0){ //�ҵ��Ǹ����Ļ��ͷ��ظý����±����
82+
return i;
83+
}
84+
}
85+
return 0; //�Ҳ����ͷ���0��
86+
}
87+
88+
//ɾ��˳����е�����Ԫ��
89+
int SLDelete(SLType SL,int n){
90+
int i;
91+
if(n<1||n>SL.ListLen+1){ //ɾ�������Ų���ȷ
92+
System.out.print("ɾ�������Ŵ��󣬲���ɾ����㣡\n");
93+
return 0; //ɾ�����ɹ��ͷ���0��
94+
}
95+
for(i=n;i<SL.ListLen;i++){
96+
SL.ListData[i]=SL.ListData[i+1]; //ֱ�ӷ��ɻ��������n�±꣬�����ĺ�һ��λ�õĽ�����ݸ���n�±����ڵĽ����ɾ���Ǹ�����Ԫ��
97+
}
98+
SL.ListLen--; //˳���Ԫ��������1
99+
return 1; //�ɹ�ɾ��������1
100+
}
101+
}
102+
103+
public class SequentialList {
104+
public static void main(String[] args) {
105+
106+
int i;
107+
SLType SL = new SLType(); // ����˳�������
108+
DATA pdata; // �����㱣�����ñ���
109+
String key; // ����һ�������εĹؼ���
110+
111+
System.out.print("˳���������ʾ!\n");
112+
113+
SL.SLInit(SL); // ��ʼ��˳���
114+
115+
System.out.print("��ʼ��˳�����ɣ�\n");
116+
117+
Scanner input = new Scanner(System.in); // ��������
118+
119+
while(true){ //ѭ�����ӽ������
120+
121+
System.out.print("�������ӵĽ����Ϣ(ѧ�� ���� ����)��");
122+
DATA data = new DATA(); //��ʼ��bean�����
123+
data.key = input.next(); //ѭ������bean���������
124+
data.name = input.next();
125+
data.age = input.nextInt();
126+
127+
if (data.age != 0) { //�����䲻Ϊ0
128+
if (SL.SLAdd(SL, data) == 0) { //�����ӽ��ʧ�ܣ�����������˳����Ѿ����x������������x����Է��������˷���0
129+
break; //�˳�ѭ��
130+
}
131+
}else{ //������Ϊ0
132+
break; //�˳�ѭ��
133+
}
134+
135+
136+
}
137+
System.out.print("\n˳����еĽ��˳��:\n"); //����ɻ��˳����Ľ��ȫ����ӡ
138+
SL.SLAll(SL); //�����ʾȫ���������
139+
140+
System.out.print("\nҪȡ���Ľ�����:"); //����ɻ��˳�����ѯ��ʽ�����Ǹ����±�ֱ�ӷ��ظý��
141+
i=input.nextInt(); //���������
142+
pdata=SL.SLFindByNum(SL,i); //��ѯ��䣬����Ų��Ҹý��,���ظý�㵽pdata
143+
if(pdata!=null){
144+
System.out.printf("��%d�������(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
145+
}
146+
147+
System.out.print("\nҪ���ҽ��Ĺؼ��֣�");
148+
key=input.next(); //����ؼ���
149+
i=SL.SLFindByCont(SL,key); //���ؼ��֣�ѧ�ţ����ң����ؽ�����
150+
pdata=SL.SLFindByNum(SL, i); //�������Ų��ҽ�㣬ֱ�ӷ��ؽ��
151+
if(pdata!=null){ //��������ò�Ϊnull
152+
System.out.printf("��%d�������(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);
153+
}
154+
155+
}
156+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /