链表 c
来源:互联网 发布:杀师案 知乎 编辑:程序博客网 时间:2024/06/05 07:17
// linkedLinearList.c#include <stdio.h>#include "ds.h"typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode, *LinkList;/* InitLinkList*/Status InitList(LinkList *l){ // head point, make l point to it *l = (LinkList)malloc(sizeof(LNode)); if(!*l)exit(OVERFLOW); (*l)->next = NULL; return OK;}/* Args: l: linked list with head node i: deliver ith element to e if exists and return OK else, return ERROR*/Status GetElemLinkList(LinkList l, int i, ElemType *e){ LNode *p = l->next; // point to first node int j = 1; while(p && j < i){ p = p->next; j++; } if(!p || j > i)return ERROR; *e = p->data; return OK;} // GetElem/* Insert e into l at position i. Args: l: linked list with head node*/Status InsertLinkList(LinkList l, int i, ElemType e){ LNode *p = l; int j = 0; while(p && j < i-1){ // find position i-1 p = p->next; j++; } // j > i-1: make sure, i>=1, if i = 0, return ERROR if(!p || j > i-1)return ERROR; LNode *new_node = (LNode *)malloc(sizeof(LNode)); new_node->data = e; new_node->next = p->next; p->next = new_node; return OK;}Status DeleteLinkList(LinkList l, int i, ElemType *e){ LNode *p = l; int j = 0; while(p && j < i-1){ p = p->next; j++; }// while end if(!p->next || j > i-1){ return ERROR; }// if end LinkList q; q = p->next; p->next = q->next; *e = q->data; free(q); return OK;}/* print link list*/Status PrintLinkList(LinkList l){ LinkList p = l->next; while(p){ printf(" %d ", p->data); p = p->next; } printf("\n"); return OK;}int main(){ // Initial link list LinkList l; InitList(&l); // insert int j, a[7]={2,6,8,9,11,15,20}; for(j=0; j<6; j++) InsertLinkList(l, j+1, a[j]); printf("LinkList l = "); PrintLinkList(l); // delete ElemType tmp; DeleteLinkList(l, 2, &tmp); printf("LinkList l = "); PrintLinkList(l); printf("Deleted element tmp = "); printf("%d\n", tmp);}
/* ds.h *//* Some pre define */#ifndef _HS_H#define _HS_H#include <string.h>#include <ctype.h>#include <sys/malloc.h>#include <stdio.h>#include <stdlib.h>/* State code */#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW 0typedef int Status;typedef int Boolean;#endif
./a.out LinkList l = 2 6 8 9 11 15 LinkList l = 2 8 9 11 15 Deleted element tmp = 6
阅读全文
0 0
- C链表
- c 链表
- 链表(C#)
- C链表
- C 链表
- [C]链表
- C 链表
- 【C++】链表
- C 链表
- c链表
- C-链表
- c 链表
- C链表
- c链表
- 链表 c
- C++:链表
- C 链表
- C语言泛型初探----C链表
- 数字发音
- python获取当前路径
- bzoj1012-(线段树)
- Android学习-常见的UI控件 Button和ImageButton
- redis复习(一):基本知识点----安装、基本数据类型和相关操作
- 链表 c
- CodeBlocks的安装及使用
- 物理引擎中的constraints
- 【Android学习】Day 1
- 机器学习面试题
- Visitor 访问者模式 ----对象行为型模式
- luogu1208 [USACO1.3]混合牛奶 Mixing Milk
- Gym
- UI整体布局