代码中包含一些元素处理函数
顺序表:
#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(10*sizeof(int));
p.length=0;
p.listSize=10;
for(int i=0;i<10;i++){
scanf("%d",&p.elem[i]);
p.length++;
// p.elem[i]=i;
// p.length++;
}
return true;
}
//判断元素是否对称
int JudgeSymmetric(arrList &p){
int i,l=p.length-1;
for(i=0;i<p.length;i++,l--){
if(i==l)
break;
if(p.elem[i]!=p.elem[l]){
return 0;
}
}
return 1;
}
//前奇数后偶数整理
bool NumOddEven(arrList &p){
int i,j,numChange;
for(i=0,j=p.length-1;i<p.length,j>=0;i++){
if(p.elem[i]%2==0){
while(p.elem[j]%2==0){
j--;
if(j==i)
return true;
}
numChange=p.elem[j];
p.elem[j]=p.elem[i];
p.elem[i]=numChange;
}
}
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);
printf("\n");
// if(JudgeSymmetric(arrlist)){
// printf("YES\n");
// }else{
// printf("NO\n");
// }
NumOddEven(arrlist);
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");
}
//头插法倒序链表
void Reverse(linklist *head){
linklist *p,*nex;
p=head->next;
head->next=NULL;
while(p){
nex = p;
p = p->next;
nex->next = head->next;
head->next = nex;
}
}
int main(){
linklist *p=initlink();
PrintL(p);
Reverse(p);
PrintL(p);
}