亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chap22.lst

?? c語言大全及例程源碼
?? LST
?? 第 1 頁 / 共 2 頁
字號:
void dldelete(
  struct address *i, /* item to delete */
  struct address **start,  /* first item */
  struct address **last) /* last item */
{
  if(i->prior) i->prior->next = i->next;
  else { /* new first item */
    *start = i->next;
    if(start) start->prior = NULL;
  }

  if(i->next) i->next->prior = i->prior;
  else   /* deleting last element */
    *last = i->prior;
}

listing 16
/* A simple mailing list program that illustrates the
   use and maintenance of doubly linked lists.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct address {
  char name[30];
  char street[40];
  char city[20];
  char state[3];
  char zip[11]; 
  struct address *next;  /* pointer to next entry */
  struct address *prior;  /* pointer to previous record */
};

struct address *start;  /* pointer to first entry in list */
struct address *last;  /* pointer to last entry */
struct address *find(char *);

void enter(void), search(void), save(void);
void load(void), list(void);
void mldelete(struct address **, struct address **);
void dls_store(struct address *i, struct address **start,
               struct address **last);
void inputs(char *, char *, int), display(struct address *);
int menu_select(void);

int main(void)
{
  start = last = NULL;  /* initialize start and end pointers */

  for(;;) {
    switch(menu_select()) {
      case 1: enter(); /* enter an address */
        break;
      case 2: mldelete(&start, &last); /* remove an address */
        break;
      case 3: list(); /* display the list */
        break;
      case 4: search(); /* find an address */
        break;
      case 5: save();  /* save list to disk */
        break;
      case 6: load();  /* read from disk */
        break;
      case 7: exit(0);
    }
  }
  return 0;
}

/* Select an operation. */
int menu_select(void)
{
  char s[80];
  int c;

  printf("1. Enter a name\n");
  printf("2. Delete a name\n");
  printf("3. List the file\n");
  printf("4. Search\n");
  printf("5. Save the file\n");
  printf("6. Load the file\n");
  printf("7. Quit\n");
  do {
    printf("\nEnter your choice: ");
    gets(s);
    c = atoi(s);
  } while(c<0 || c>7);
  return c;
}

/* Enter names and addresses. */
void enter(void)
{
  struct address *info;

  for(;;) {
    info = (struct address *)malloc(sizeof(struct address));
    if(!info) {
      printf("\nout of memory");
      return;
    }

    inputs("Enter name: ", info->name, 30);
    if(!info->name[0]) break;  /* stop entering */
    inputs("Enter street: ", info->street, 40);
    inputs("Enter city: ", info->city, 20);
    inputs("Enter state: ", info->state, 3);
    inputs("Enter zip: ", info->zip, 10);

    dls_store(info, &start, &last);
  } /* entry loop */
}

/* This function will input a string up to
   the length in count and will prevent
   the string from being overrun.  It will also
   display a prompting message. */
void inputs(char *prompt, char *s, int count)
{
  char p[255];

  do {
    printf(prompt);
    fgets(p, 254, stdin);
    if(strlen(p) > count) printf("\nToo Long\n");
  } while(strlen(p) > count);

  p[strlen(p)-1] = 0; /* remove newline character */
  strcpy(s, p);
}

/* Create a doubly linked list in sorted order. */
void dls_store(
  struct address *i,   /* new element */
  struct address **start, /* first element in list */
  struct address **last /* last element in list */
)
{
  struct address *old, *p;

  if(*last==NULL) {  /* first element in list */
    i->next = NULL;
    i->prior = NULL;
    *last = i;
    *start = i;
    return;
  }
  p = *start; /* start at top of list */

  old = NULL;
  while(p) {
    if(strcmp(p->name, i->name)<0){
      old = p;
      p = p->next;
    }
    else {
      if(p->prior) {
        p->prior->next = i;
        i->next = p;
        i->prior = p->prior;
        p->prior = i;
        return;
      }
      i->next = p; /* new first element */
      i->prior = NULL;
      p->prior = i;
      *start = i;
      return;
    }
  }
  old->next = i; /* put on end */
  i->next = NULL;
  i->prior = old;
  *last = i;
}

/* Remove an element from the list. */
void mldelete(struct address **start, struct address **last)
{
  struct address *info;
  char s[80];

  inputs("Enter name: ", s, 30);
  info = find(s);
  if(info) {
    if(*start==info) {
      *start=info->next;
      if(*start) (*start)->prior = NULL;
      else *last = NULL;
    }
    else {
      info->prior->next = info->next;
      if(info!=*last)
          info->next->prior = info->prior;
      else
        *last = info->prior;
    }
    free(info);  /* return memory to system */
  }
}

/* Find an address. */
struct address *find( char *name)
{
  struct address *info;

  info = start;
  while(info) {
    if(!strcmp(name, info->name)) return info;
    info = info->next;  /* get next address */
  }
  printf("Name not found.\n");
  return NULL;  /* not found */
}

/* Display the entire list. */
void list(void)
{
  struct address *info;

  info = start;
  while(info) {
    display(info);
    info = info->next;  /* get next address */
  }
  printf("\n\n");
}

/* This function actually prints the fields in each address. */
void display(struct address *info)
{
    printf("%s\n", info->name);
    printf("%s\n", info->street);
    printf("%s\n", info->city);
    printf("%s\n", info->state);
    printf("%s\n", info->zip);
    printf("\n\n");
}

/* Look for a name in the list. */
void search(void)
{
  char name[40];
  struct address *info;

  printf("Enter name to find: ");
  gets(name);
  info = find(name);
  if(!info) printf("Not Found\n");
  else display(info);
}

/* Save the file to disk. */
void save(void)
{
  struct address *info;

  FILE *fp;

  fp = fopen("mlist", "wb");
  if(!fp) {
    printf("Cannot open file.\n");
    exit(1);
  }
  printf("\nSaving File\n");

  info = start;
  while(info) {
    fwrite(info, sizeof(struct address), 1, fp);
    info = info->next;  /* get next address */
  }
  fclose(fp);
}

/* Load the address file. */
void load()
{
  struct address *info;
  FILE *fp;

  fp = fopen("mlist", "rb");
  if(!fp) {
    printf("Cannot open file.\n");
    exit(1);
  }

  /* free any previously allocated memory */
  while(start) {
    info = start->next;
    free(info);
    start = info;
  }

  /* reset top and bottom pointers */
  start = last = NULL;

  printf("\nLoading File\n");
  while(!feof(fp)) {
    info = (struct address *) malloc(sizeof(struct address));
    if(!info) {
      printf("Out of Memory");
      return;
    }
    if(1 != fread(info, sizeof(struct address), 1, fp)) break;
    dls_store(info, &start, &last);
  }
  fclose(fp);
}

listing 17
struct tree {
  char info;
  struct tree *left;
  struct tree *right;
};

struct tree *stree(
  struct tree *root,
  struct tree *r,
  char info)
{
  if(!r) {
    r = (struct tree *) malloc(sizeof(struct tree));
    if(!r) {
      printf("Out of Memory\n");
      exit(0);
    }
    r->left = NULL;
    r->right = NULL;
    r->info = info;
    if(!root) return r; /* first entry */
    if(info < root->info) root->left = r;
    else root->right = r;
    return r;
  }
  if(info < r->info)
    stree(r,r->left,info);
  else
    stree(r,r->right,info);

  return root; 
}

listing 18
void inorder(struct tree *root)
{
  if(!root) return;

  inorder(root->left);
  if(root->info) printf("%c ", root->info);
  inorder(root->right);
}

listing 19
void preorder(struct tree *root)
{
  if(!root) return;

  if(root->info) printf("%c ", root->info);
  preorder(root->left);
  preorder(root->right);
}

void postorder(struct tree *root)
{
  if(!root) return;

  postorder(root->left);
  postorder(root->right);
  if(root->info) printf("%c ", root->info);
}

listing 20
void print_tree(struct tree *r, int l)
{
  int i;

  if(r == NULL) return;

  print_tree(r->right, l+1);
  for(i=0; i<l; ++i) printf(" ");
  printf("%c\n", r->info);
  print_tree(r->left, l+1);
}

listing 21
/* This program displays a binary tree. */

#include <stdlib.h>
#include <stdio.h>

struct tree {
  char info;
  struct tree *left;
  struct tree *right;
};

struct tree *root; /* first node in tree */
struct tree *stree(struct tree *root,
                   struct tree *r, char info);
void print_tree(struct tree *root, int l);

int main(void)
{
  char s[80];

  root = NULL;  /* initialize the root */

  do {
    printf("Enter a letter: ");
    gets(s);
    root = stree(root, root, *s);
  } while(*s);

  print_tree(root, 0);

  return 0;
}

struct tree *stree(
  struct tree *root,
  struct tree *r,
  char info)
{

  if(!r) {
    r = (struct tree *) malloc(sizeof(struct tree));
    if(!r) {
      printf("Out of Memory\n");
      exit(0);
    }
    r->left = NULL;
    r->right = NULL;
    r->info = info;
    if(!root) return r; /* first entry */
    if(info < root->info) root->left = r;
    else root->right = r;
    return r;
  }

  if(info < r->info)
    stree(r, r->left, info);
  else
    stree(r, r->right, info);

  return root;
}

void print_tree(struct tree *r, int l)
{
  int i;

  if(!r) return;

  print_tree(r->right, l+1);
  for(i=0; i<l; ++i) printf(" ");
  printf("%c\n", r->info);
  print_tree(r->left, l+1);
}

listing 22
struct tree *search_tree(struct tree *root, char key)
{
  if(!root) return root;  /* empty tree */
  while(root->info != key) {
    if(key<root->info) root = root->left;
    else root = root->right;
    if(root == NULL) break;
  }
  return root;
}

listing 23
struct tree *dtree(struct tree *root, char key)
{
  struct tree *p,*p2;

  if(!root) return root; /* not found */

  if(root->info == key) { /* delete root */
    /* this means an empty tree */
    if(root->left == root->right){
      free(root);
      return NULL;
    }
    /* or if one subtree is null */
    else if(root->left == NULL) {
      p = root->right;
      free(root);
      return p;
    }
    else if(root->right == NULL) {
      p = root->left;
      free(root);
      return p;
    }
    /* or both subtrees present */
    else {
      p2 = root->right;
      p = root->right;
      while(p->left) p = p->left;
      p->left = root->left;
      free(root);
      return p2;
    }
  }
  if(root->info < key) root->right = dtree(root->right, key);
  else root->left = dtree(root->left, key);
  return root;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本乱人伦aⅴ精品| 捆绑紧缚一区二区三区视频| 欧美日本在线一区| 国产98色在线|日韩| 婷婷激情综合网| 1区2区3区精品视频| 欧美大片在线观看| 色噜噜狠狠色综合欧洲selulu| 九一九一国产精品| 亚洲成人自拍偷拍| 国产精品国产自产拍高清av王其| 欧美一区二区三区爱爱| 99久久免费国产| 韩国女主播成人在线| 亚洲va国产va欧美va观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品77777| 日韩电影在线一区二区三区| 国产成人免费高清| 婷婷亚洲久悠悠色悠在线播放| 专区另类欧美日韩| 国产女同互慰高潮91漫画| 精品日韩在线观看| 欧美一区二区三区思思人| 色丁香久综合在线久综合在线观看| 成熟亚洲日本毛茸茸凸凹| 精品一区二区三区不卡| 天天爽夜夜爽夜夜爽精品视频| 亚洲综合自拍偷拍| 夜夜嗨av一区二区三区四季av| 国产精品久久久久久亚洲毛片 | 欧美人与禽zozo性伦| 一本色道综合亚洲| 色噜噜夜夜夜综合网| 91美女片黄在线观看91美女| 成人夜色视频网站在线观看| 黄网站免费久久| 蜜臀久久99精品久久久画质超高清 | 国产精品久久久一区麻豆最新章节| 精品国产乱码久久久久久图片| 欧美一区2区视频在线观看| 欧美日韩视频在线第一区| 欧美视频一区二区三区四区| 色999日韩国产欧美一区二区| 日本乱人伦一区| 欧美视频一区在线| 69堂精品视频| 欧美一级二级在线观看| 日韩精品一区二区三区在线观看| 欧美一区二区视频在线观看2022| 日韩午夜av电影| 久久精品这里都是精品| 国产蜜臀av在线一区二区三区| 中文字幕成人av| 亚洲精品水蜜桃| 午夜精品久久久久久久久| 日本在线不卡视频| 国产麻豆视频一区| 99久久99久久久精品齐齐| 一本高清dvd不卡在线观看| 欧美私人免费视频| 欧美一区二区三区免费在线看| 日韩午夜在线观看视频| 久久精品人人做| 国产精品麻豆欧美日韩ww| 亚洲精品免费视频| 日韩精品免费专区| 国产精品一区二区三区网站| 成人蜜臀av电影| 欧洲国产伦久久久久久久| 欧美日韩国产高清一区二区| 精品电影一区二区| 亚洲欧美激情一区二区| 日韩中文字幕一区二区三区| 精品一区二区三区免费播放| 99国产精品久久久久| 6080亚洲精品一区二区| 国产欧美一区二区精品性色| 亚洲视频每日更新| 蜜桃视频一区二区| www.亚洲国产| 91精品国产91久久综合桃花| 国产视频一区不卡| 性感美女极品91精品| 国产高清在线观看免费不卡| 色天使色偷偷av一区二区| 精品国产91九色蝌蚪| 亚洲免费av高清| 精品一区二区免费在线观看| 色婷婷综合久色| 欧美精品一区二区三区蜜桃视频 | 日韩三级精品电影久久久| 精品国产三级a在线观看| 日本一区二区高清| 色狠狠桃花综合| 欧美日韩免费一区二区三区视频| 日韩三级视频在线看| 亚洲精品久久久蜜桃| 狠狠色丁香婷婷综合久久片| 欧美三区免费完整视频在线观看| 国产亚洲美州欧州综合国| 日韩高清国产一区在线| 91免费小视频| 久久久亚洲午夜电影| 日韩国产欧美一区二区三区| 99精品一区二区三区| 久久婷婷综合激情| 五月综合激情婷婷六月色窝| 色综合一个色综合| 国产欧美日韩视频在线观看| 日本欧美一区二区三区乱码| 在线精品国精品国产尤物884a| 欧美激情一二三区| 国产精品综合一区二区三区| 69久久99精品久久久久婷婷| 亚洲自拍偷拍综合| 欧美成人三级电影在线| 日韩亚洲欧美成人一区| 亚洲伦理在线精品| 成人黄色777网| 久久九九久久九九| 国内国产精品久久| 日韩视频123| 日产国产高清一区二区三区| 欧美精品一二三区| 亚洲一区二区三区中文字幕在线| 99视频在线精品| 国产精品久久久久久久久果冻传媒 | 91久久线看在观草草青青| 国产精品系列在线| 粉嫩av一区二区三区| 久久久久久9999| 国产精品系列在线观看| 久久久亚洲午夜电影| 国产乱妇无码大片在线观看| 精品va天堂亚洲国产| 精品一区二区三区免费视频| 精品久久国产老人久久综合| 久久精品噜噜噜成人88aⅴ| 日韩欧美电影一区| 美女视频黄免费的久久| 欧美成人女星排名| 久久九九99视频| 成人综合在线网站| 久久久99久久精品欧美| 日韩欧美www| 奇米四色…亚洲| 日韩一区二区三区三四区视频在线观看| 午夜成人免费视频| 欧美电视剧免费观看| 国产精品羞羞答答xxdd| 国产日韩av一区| av成人免费在线| 亚洲一二三区视频在线观看| 欧美日韩的一区二区| 奇米色777欧美一区二区| 精品理论电影在线观看| 国产成人精品免费| 亚洲视频在线观看三级| 欧洲精品在线观看| 日韩av电影免费观看高清完整版 | 午夜久久福利影院| 欧美一级免费大片| 国产精品一区二区久久精品爱涩| 国产精品理论片在线观看| 一本色道亚洲精品aⅴ| 午夜亚洲国产au精品一区二区| 日韩欧美一区二区不卡| 国产成人鲁色资源国产91色综 | 亚洲福中文字幕伊人影院| 日韩欧美国产电影| va亚洲va日韩不卡在线观看| 五月综合激情网| 久久久亚洲午夜电影| 色噜噜夜夜夜综合网| 六月丁香综合在线视频| 国产精品国产三级国产aⅴ原创| 欧美少妇一区二区| 狠狠狠色丁香婷婷综合激情| 亚洲欧美激情一区二区| 久久综合狠狠综合| 成人免费视频在线观看| 亚洲欧美色一区| 欧美无砖专区一中文字| 麻豆极品一区二区三区| 亚洲欧美一区二区视频| 884aa四虎影成人精品一区| 福利一区二区在线| 视频一区在线播放| 日本一区二区免费在线 | 国产成人亚洲综合a∨婷婷| 亚洲欧美色图小说| 久久综合色播五月| 欧美日韩国产首页在线观看| 国产成a人亚洲精品| 麻豆成人91精品二区三区| 亚洲精品综合在线| 日本一二三不卡| 日韩欧美一区二区免费| 欧美系列在线观看|