用链表实现vector的一些功能,部分代码如下,以后还要修改,现在先做一个修正
// keshan.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct Node)
struct Node{
int value;
Node * next;
};
//创建单向链表
Node * create_link(){
Node *head = (Node *)malloc(LEN);
head->next = NULL;
head->value = 0;
return head;
}
//末尾增加元素,相当于push_back
void push_link(Node *head ,int key){
Node * p = head;
while(p->next!=NULL){
p = p->next;
}
p->next = (Node *)malloc(LEN);
p = p->next;
p->value = key;
p->next = NULL;
}
//求链表的长度,相当于vector的length
int length_link(Node * head){
Node * p = head;
int len = 1;
while(p->next!=NULL){
p = p->next;
len++;
}
return len;
}
//查询链表,相当于vector中的at
int at_link(Node * head,int index){
Node * p = head;
while(p->next!=NULL){
}
}
//打印链表
void print_link(Node *head,const char * str){
printf("%s\n",str);
Node *p = head;
printf("%d\n",head->value);
while(p->next!=NULL){
p = p->next;
printf("%d\n",p->value);
}
}
//清空链表
void clear_link(Node *head){
}
int _tmain(int argc, _TCHAR* argv[])
{
//创建
Node * head = create_link();
print_link(head,"创建的链表为:");
//增加元素
push_link(head,5);
push_link(head,6);
print_link(head,"增加两个元素后为:");
//访问元素
int len = length_link(head);
printf("the length is %d\n",len);
//清空
//clear_link(head);
//print_link(head,"清空之后的链表为");
getchar();
return 0;
}