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