/*单向链表*/
typedef struct MySList
{
int data;
struct MySList* next;
}ListSNode;
void SDList()
{
int i = 0;
ListSNode *head = new ListSNode;//VS2015 C++环境下,如果是用C写的话改为 ListNode *head=malloc(sizeof(ListNode)) ;
ListSNode *p=NULL;
ListSNode *tail=NULL;
head->next = NULL;
tail = head;
for (i = 0; i<5; i++)//生成单向链表
{
p = new ListSNode;//同上
p->data = i;
tail->next = p;
tail = p;
}
tail->next = NULL;
p = head;
for (i = 0; i<5; i++)//遍历
{
p = p->next;
printf("%d", p->data);
}
delete p;
p = NULL;
ListSNode *pfree=head;//释放
for (i = 0; i < 5; i++)
{
head = head->next;
delete pfree;
pfree = head;
}
pfree = NULL;
head = NULL;
tail = NULL;
}
/*双向循环链表*/
typedef struct MyDList
{
int data;
struct MyDList* next;
struct MyDList* last;
}ListDNode;
void DDList()
{
MyDList *head = new ListDNode;//同上
head->next = NULL;
head->last = NULL;
MyDList * q = head;
MyDList * p=NULL;
for (int i = 0; i < 5; i++)
{
p = new ListDNode;//同上
p->data = i;
q->next = p;
p->last = q;
q = p;
}
q->next = head;
head->last = q;
p = head;
for (int i = 0; i < 5; i++)
{
p = p->next;
cout << p->data<<" ";
}
p = head;
for (int i = 0; i < 5; i++)//
{
p = p->last;
cout << p->data << " ";
}
}