- MylinkedListMyCreateList() {
- MylinkedList list = (MylinkedList) malloc(sizeof(MylinkedList));
- PNODE head = (NODE) malloc(sizeof(NODE));
- PNODE tail = (NODE ) malloc(sizeof(NODE));
- list->head = head;
- list->tail = tail;
- list->tail->next=NULL;
- list->tail->previous=NULL;
- list->head->next=NULL;
- list->head->previous=NULL;
- list->len=0;
- printf("init a list");
- return list;
- }
- void MyAppend(MYLINKEDLIST list, ADT data,int len) {
- if (list->head->next == NULL) {
- MyInsert(list, data, 0,len);
- return;
- }
- printf("->");
- PNODE ctail = (NODE) malloc(sizeof(NODE));
- ctail->data=(char )malloc(len);
- memcpy(ctail->data,data,len);
- ctail->size=len;
- ctail->next=NULL;
- ctail->previous=list->tail->next;
- list->tail->next->next = ctail;
- list->tail->next = ctail;
- list->len = list->len + 1;
- }
- int MyInsert(MYLINKEDLIST list, ADT data, unsigned int pos,int len) {
- if ( pos> list->len) return 0;
- printf("insert success!\n");
- PNODE node = list->head;
- for (unsigned int i = 0; i <pos; i++) {
- node = node->next;
- }
- PNODE newNode = (NODE) malloc(sizeof(NODE));
- newNode->data=(char *)malloc(len);
- memcpy(newNode->data,data,len);
- newNode->size=len;
- newNode->next = node->next;
- newNode->previous=node; if(node->next){
- newNode->next->previous=newNode;
- }
- node->next = newNode;
- list->tail->next=newNode;
- list->len = list->len + 1;
- return 1;
- }
来源: http://www.bubuko.com/infodetail-2996655.html