隨筆-14  評論-142  文章-0  trackbacks-0

          線性表的鏈式存儲結構 :

          鏈式存儲表示 :

          typedef struct LNode{

          ?

          ? ElemType ? data;

          ? Struct LNode *next;

          ?

          }LNode,*LinkList;

          基本操作在鏈表上的實現 :

          (1) ?? 單鏈表的取元素算法(經典

          Status GetElem_L(LinkList L, int i,ElemType &e)

          {

          ?

          p=L->next; j=1;

          while(p && j<i)

          {

          ????? p=p->next;++j;

          }

          if(!p || j>i) return ERROR;

          e=p->data;

          return OK;

          ?

          }

          算法分析 :

          基本操作是 : 比較 j I, 并把指針后移 , 循環體執行的次數 , 與被查元素的位置有關 . 假設表長為 n, 如果 1<=i<=n, 那么循環體中語句的執行次數為 i-1. 否則次數為 n 所以時間復雜度為 O(n).

          ?

          ? (2) ?? 插入元素算法

          Status ListInsert_L(LinkList &L, int i,ElemType e)

          {

          ?

          ?? p=L;j=0;

          ?? while(p&&j<i-1)

          ????? { p=p->next;++j}

          ?? if(!p || j>i-1)

          ????? return ERROR;

          ?

          ?? s = (LinkList)malloc(sizeof(LNode));

          ?? s->data = e;

          ?? s->next = p->next;

          ?? p->next =s;

          ?? return OK;

          }
          (3) ?? 刪除元素算法

          Status ListDelete_L(LinkList &L, int i,ElemType &e)

          {

          ?? p=L;j=0;

          while(p &&j<i-1)

          ?? {p=p->next;++j}

          if(!p ||j>i-1)

          ????? return? ERROR;

          ??

          q=p->next;

          ?? p->next =q->next;

          ?? e =q->data;

          ?? free(q);

          ?? return OK;

          }

          ?

          算法分析 :

          插入和刪除算法 , 都要先找到第 i-1 個節點 , 所以時間復雜度為 O(n);

          ? (4) ?? 單鏈表的建立算法

          ?

          void CreateList_L(LinkList &L,int n){

          ?

          ?L =(LinkList)malloc(sizeof(LNode));

          ?

          ?L->next = null;

          ? for(i = n;i>0;--i){

          ?

          ? p =(LinkList)malloc(sizeof(LNode));

          ? scanf(&p->data);

          ? p->next = L->next;

          ? L->next =p;

          ? }

          ?

          }

          算法分析 :

          按照逆序循環輸入 n 個數據元素的值 , 建立新節點 . 并插入 . 因此算法的時間復雜度為 O(n).


          posted on 2006-06-16 01:04 liulang 閱讀(957) 評論(3)  編輯  收藏

          評論:
          # re: 單鏈表學習筆記 2006-06-24 16:18 | leilei
          怎么使用c寫的??  回復  更多評論
            
          # re: 單鏈表學習筆記 2006-06-24 16:20 | liulang
          我現在也在同步學習C!!  回復  更多評論
            
          # re: 單鏈表學習筆記 2006-10-31 18:20 | lovekker
          謝謝,正在學習 非常需要!!!   回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 文安县| 新宾| 长宁县| 锦州市| 苍南县| 盐城市| 乐清市| 广东省| 原阳县| 平武县| 永泰县| 潮州市| 晋州市| 绥芬河市| 申扎县| 定日县| 读书| 马边| 永安市| 铜山县| 偃师市| 景德镇市| 邹城市| 闽清县| 哈尔滨市| 贵南县| 乐昌市| 乌拉特前旗| 易门县| 永顺县| 彰武县| 修文县| 连城县| 柏乡县| 清远市| 环江| 舟山市| 岳阳县| 且末县| 巴林左旗| 井冈山市|