#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define maxsize 1024
///链式表结构
struct Node
{
int data;
Node* next;
};
typedef Node* LinkList;
void InitList(LinkList &L,int C);///初始化链表
void CreateList(LinkList &L,int C);
void PrintList(LinkList L);
void AddEle(LinkList& L,int X);
LinkList ReverseList(LinkList L);
void DeleteList(LinkList& L,int index);
struct SeqList
{
int data[maxsize];
int length;
};
typedef SeqList* sqLink;
void InitArrList(sqLink &L,int C);
void PrintArrList(sqLink L);
void AddArrEle(sqLink &L,int C);
void ReverseArrList(sqLink &L);
void DeleteArrList(sqLink &L,int C);
///顺序表结构
int main()
{
int C;
///顺序表结构
/* cout<<"输入初始链表元素个数:\n";
cin>>C;
sqLink L;
InitArrList(L,C);
AddArrEle(L,10);
//ReverseArrList(L);
DeleteArrList(L,2);
PrintArrList(L);*/
///链式表结构
LinkList L;
cout<<"输入初始链表元素个数:\n";
cin>>C;
InitList(L,C);
AddEle(L,10);
//ReverseList(L);
DeleteList(L,2);
PrintList(L);
return 0;
}
void InitArrList(sqLink &L,int C)
{
L=(SeqList*)malloc(sizeof(SeqList)*maxsize);
for(int i=0;i<C;i++)
{
int x;
cin>>x;
L->data[i]=x;
//cout<<L->data[i];
L->length+=1;
}
cout<<"创建顺序表完成\n";
}
void PrintArrList(sqLink L)
{
for(int i=0;i<L->length;i++)
{
cout<<L->data[i]<<".";
}
}
void AddArrEle(sqLink &L,int C)
{
L->data[L->length]=C;
L->length+=1;
cout<<"添加元素完成\n";
}
void ReverseArrList(sqLink &L)
{
for(int x=0; x<L->length/2; x++) {
int temp = L->data[x];
L->data[x] = L->data[L->length-1-x];
L->data[L->length-1-x] = temp;
}
}
void DeleteArrList(sqLink &L,int C)
{
for(int i=0;i<L->length;i++)
{
if(L->data[i]==C)
{
L->data[i]=0;///删除
int k=i;
for(i=k;i<L->length;i++)
L->data[i]=L->data[i+1];
}
}
cout<<"删除元素成功:"<<C<<endl;
}
//初始化链表
void InitList(LinkList &L,int C)
{
L=(Node*)malloc(sizeof(Node));
cout<<"链表初始化完成------------\n";
CreateList(L,C);
}
void CreateList(LinkList &L,int C )
{
LinkList p,q;
L->next=NULL;
p=L;
for(int i=0,x;i<C;i++)
{
LinkList q=(Node*)malloc(sizeof(Node));//每次添加节点都要申请一个新的地址来存放
cin>>x;
q->data=x;//复制数据到当前节点
p->next=q;//临时申城的节点复制到当前节点(添加操作)
p=p->next;//将当前新获取的节点复制给
}
p->next=NULL;
cout<<"创建成功"<<endl;
}
void AddEle(LinkList& L,int X)
{
LinkList p=L;
while(p->next!=NULL)
{
p=p->next;
}
LinkList q=(Node*)malloc(sizeof(Node));
q->data=X;
p->next=q;
p=p->next;
p->next=NULL;
cout<<"添加元素成功";
}
void PrintList(LinkList L)
{
LinkList p=L;
while(p->next!=NULL)
{
cout<<p->next->data<<".";
p=p->next;
}
cout<<endl;
}
LinkList ReverseList(LinkList head)
{
LinkList p,q;
LinkList t = NULL;
p=head;
if (p->next==NULL||p->next->next==NULL)
{
return head;
}
p=head->next;
q=head->next->next;
while(q!=NULL)
{
t=q->next;
q->next=p;
p=q;
q=t;
}
head->next->next=NULL;
head->next=p;
return head;
}
void DeleteList(LinkList& L,int index)
{
LinkList p,q;
p=L;
int j=0;
while(p->next!=NULL){
p=p->next;
if(p->data==index)
{
q=p->next;
p->next=q->next;
}
}
}