数据结构之简单的顺序表、链表

注意:此文只适用于初学者,浅显的代码,实际上顺序表和链表还有更加高效有用的处理方式

顺序表:

#include <stdio.h>
#include <stdlib.h>
/**
*ArrList顺序表
*/
typedef struct ArrList{
int *elem;
int length;
int listSize;
}arrList;

bool Entry(arrList &p){
p.elem=(int )malloc(10sizeof(int));
p.length=0;
p.listSize=10;

for(int i=0;i<10;i++){
	p.elem[i]=i;
	p.length++;
}
return true;

}

void Insert(arrList &p,int InsertData,int Location){
if(p.listSize==p.length){
p.elem=(int *)realloc(p.elem,(p.listSize+10)*sizeof(int));
p.listSize=p.listSize+10;
printf(“Realloc is successful!\n”);
}
for(int i=p.length;i>=Location;i–){
p.elem[i]=p.elem[i-1];
}
p.length++;
p.elem[Location-1]=InsertData;
}

void Print(arrList &p){

for(int i=0;i<p.length;i++)
	printf("%d,",p.elem[i]);

}

int main(){
arrList arrlist;
Entry(arrlist);
Print(arrlist);
printf("\n===================\n");
Insert(arrlist,666,6);
Print(arrlist);
return 0;
}

链表:

#include <stdio.h>
#include <stdlib.h>
/**
*Linklist链表
*/
typedef struct Linknode{
int data;
struct Linknode *next;
}linklist;

//初始化链表
linklist *initlink(){
linklist *head=(linklist *)malloc(sizeof(linklist)); //创建头节点
linklist *p=head; //指向头节点的指针
//生成链表
int i;
for(i=0;i<10;i++){
linklist *a=(linklist *)malloc(sizeof(linklist)); //创建新节点
a->data=i;
a->next=NULL;

 	p->next=a;
 	p=p->next;
} 
return head;

}

void PrintL(linklist *p){
linklist *t=p;
while(t->next){
t=t->next;
printf("%d, “,t->data);
}
printf(”\n");
}

int main(){
//CreateList()
linklist *p=initlink();
PrintL§;

}

猜你喜欢

转载自blog.csdn.net/weixin_43871956/article/details/88823088