用链表实现vector

用链表实现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;
}


posted @ 2017-03-07 17:53  开往春天的拖拉机  阅读(240)  评论(0编辑  收藏  举报