<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                這是前面我講得算法與數據結構中鏈表的綜合,如果這里不明白請看前面的基礎知識:[鏈接地址](http://blog.csdn.net/qq_21792169/article/details/49302909)。 ~~~ #include <stdio.h> #include <stdlib.h> #include <string.h> /* 定義一個結構體 */ typedef struct NAME{ char *name; struct NAME *pre; struct NAME *next; }T_Name, *PT_Name; static PT_Name ? g_ptNameHead; ? ?/* 定義鏈表頭 */ void add_name(PT_Name ptNew) { PT_Name ptCur; if (g_ptNameHead == NULL) { g_ptNameHead = ptNew; } else { ptCur = g_ptNameHead; while (ptCur->next) { ptCur = ptCur->next; } ptCur->next = ptNew; ptNew->pre ?= ptCur; } } void del_name(PT_Name ptDel) { PT_Name ptCur; PT_Name ptPre; PT_Name ptNext; if (g_ptNameHead == ptDel) ? /* 如果鏈表頭等于當前刪除的鏈表 */ { g_ptNameHead = ptDel->next; /* 釋放 */ return; } else { ptCur = g_ptNameHead->next; while (ptCur) { if (ptCur == ptDel) { /* 從鏈表中刪除 */ ptPre ?= ptCur->pre; ptNext = ptCur->next; ptPre->next = ptNext; if (ptNext) { ptNext->pre = ptPre; } break; } else { ptCur = ptCur->next; } } } free(ptDel->name); free(ptDel); } void add_one_name() { PT_Name ptNew; char *str; char name[128]; printf("enter the name:"); scanf("%s", name); str ?= malloc(strlen(name) + 1); ? /* name是一個局部變量,用來存放名字,當這個函數結束的時候,該內存就得釋放,所以我們得單獨分配一塊內來存放這個name ,下面還得用malloc來分配一個結構體大的內存空間,記住我們定義結構體的時候不能添加static,因為定義結構提示不會分配內存空間的,他定義的只是這種類型,所以我們增加的時候一定要記得分配內存*/ strcpy(str, name); ptNew = malloc(sizeof(T_Name)); ptNew->name = str; ptNew->pre ?= NULL; ptNew->next = NULL; add_name(ptNew); } PT_Name get_name(char *name) { PT_Name ptCur; if (g_ptNameHead == NULL) { return NULL; } else { ptCur = g_ptNameHead; do { if (strcmp(ptCur->name, name) == 0) return ptCur; else ptCur = ptCur->next; }while (ptCur); } return NUL; } void del_one_name() { PT_Name ptFind; char name[128]; printf("enter the name:"); scanf("%s", name); ptFind = get_name(name); if (ptFind == NULL) { printf("do not have this name\n"); return ; } del_name(ptFind); } void list_all_name(void) { PT_Name ptCur; int i = 0; ptCur = g_ptNameHead; while (ptCur) { printf("%02d : %s\n", i++, ptCur->name); ptCur = ptCur->next; } } int main(int argc, char **argv) { char c; while (1) { printf("<l> List all the names\n"); printf("<a> add one name\n"); printf("<d> del one name\n"); printf("<x> exit\n"); printf("Enter the choise: "); c = getchar(); switch (c) { case 'l': { list_all_name(); break; } case 'a': { add_one_name(); break; } case 'd': { del_one_name(); break; } case 'x': { return 0; break; } default: { break; } } } return 0; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看