隨筆-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
          謝謝,正在學習 非常需要!!!   回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 大冶市| 澄江县| 靖州| 广州市| 米脂县| 电白县| 大余县| 海安县| 从化市| 天峨县| 两当县| 宝清县| 连江县| 江油市| 吉木乃县| 东乡县| 江安县| 梓潼县| 应城市| 安庆市| 元氏县| 丁青县| 湖南省| 阿克苏市| 平利县| 宜良县| 平顶山市| 内黄县| 桓台县| 寻甸| 保靖县| 稷山县| 姚安县| 海盐县| 宜州市| 和硕县| 牙克石市| 绥宁县| 大理市| 旬邑县| 吕梁市|